SSHとは
物理的に離れているサーバーに対し、ネットワークを介して
アクセスするプロトコルです
リモートログインと言う呼び方もされています
リモートログインには長い間
TELNETと言うプトロコルが利用されていました
しかし、TELNETにはデーターを素のまま(平文)で流してしまう欠点があります
ネットワーク上を流れるデーターが盗聴され、
ログイン情報など非常に重要なデーターさえも
第3者に知られてしまう場合がありました
そこで、安全な運用を実現するために
データーの暗号化と確実なホスト認証が必要とされ
これを実現したのが「SSH」です
SSHの具体的な暗号化技術とホスト認証技術は別の機会にするとして
実際にLinuxに実装されているOpenSSHをまずは使って見る事にしましょう
まずは、サービスが稼動状態なのか確認してみましょう
# systemctl status sshd
active (runninng) と出ていればサービスは起動しています
もし、サービスが停止している場合は
# systemctl start sshd
で起動しましょう
サービスそのものがインストールされてない場合
yum -y sshd などでパッケージをインストールしましょう
では、
VPSサーバーからユーザーに対してSSH接続してみましょう
とその前に一般ユーザーを1つ作ります
# useradd seito
続いてユーザーseitoのパスワードの設定
# passwd seito
ではrootからseitoへssh接続してみましょう
# ssh 一般ユーザー名 @ 接続先のホスト(IPアドレスなど)
# ssh seito@localhost
一番最初に接続した場合、なりすまし接続を防止するため
このホストを信用するか確認メッセージがでます
・・・
Are you sure you want to contine connecting (yes/no)?
「yes」で返しましょう
Warning: Pemanently added ‘XXX.XXX.XXX.XXX’ (RSA) to the list of known hosts.
seito@localhost’s password:
ユーザーseitoのパスワードを入力します
これで、接続先のホスト認証鍵がクライアント側に登録されました
次回からは、この認証鍵を使ってサーバー側のペア鍵をチェックすることを表しています
ログインが成功すると
[一般ユーザー@ホスト] $ に変わっているのが解ると思います
ルートでログインし、さらに一般ユーザーへログインし
やろうと思えば、ここから別ユーザーへログインしたり・・・
ちょっとやってみましょう
ユーザーを切り替えるコマンドは su
$ SU
Password
これをほっとくと
2重3重とログインしていくので
どんどん動作が重くなっていきます
現在のユーザーからログアウトしたい時は「exit」と入力すれば
1つ前のユーザーに戻ります
また、SSH接続から抜けるときも「exit」と入力します
これがSSHの大まかな動作です
Linux同士やMacOSなどはターミナル同士では、こうした接続が可能ですが
Windowsの場合、ターミナルがありません
また、このVNCコンソールで全ての設定をすることも可能ですが
ちょっとやりにくい
そこで、SSHクライアントソフト=「TeraTerm」を使います。
準備段階であらかじめ「TeraTerm」をインストールしていると思いますが
接続方法は、いたって簡単です
では、「TeraTerm」を起動して
VPSに対してリモートログインしてみましょう
起動すると
「新しい接続」
ホスト:IPv4
TCPポート:22
これでホストサーバーへ接続します
———————————————————-
MacOSの方:
「Finder」→「アプリケーション」→「ユーティリティ」→「ターミナル」
ssh(サーバーIPv4アドレス) -l(一般ユーザーID)
Linuxクライアントの方:
ターミナルからコマンドでSSH接続します
———————————————————-
初めて接続する場合、「セキュリティ警告」が出ます
これは先ほど勉強しましたSSH接続の「なりすまし防止」で、
認証鍵の確認となります
「続行」をクリックし、認証鍵の登録をしましょう
続いて「SSH認証」です
さきほどCentOSに登録したユーザー名「seito」でログインしてみましょう
一般ユーザー名とパスフレーズ(パスワード)を入力
ログインしましょう
TeraTermのコンソール画面で
[seito@…]$
が確認できますでしょうか
続いて、SSHを使う上でセキュリティの確認をしたいと思います。
一旦TeraTermはexitなどで閉じてください
再びTeraTermを起動
今度はいきなりrootでログインしてみましょう
ログイン出来てしまった方は要注意です!
rootは全ての設定が行えるユーザーです。
いきなりルートログインが出来てしまうと
パスワードさえ解ってしまえば、第3者が乗っ取ることが可能になってしまいます
これは非常に危険です
そこで、ルートログインを禁止しましょう
ルートログインを禁止すれば、
まずは一般ユーザーでの認証にパスしなければなりません
当然、ユーザー名とパスワードが合致が条件です
その上で、ルートへログインするので
セキュリティが向上します
では、実際のSSH設定方法を説明します
以下の設定ファイルをviで開いてみましょう
# vi /etc/ssh/sshd_config
ルートログインを制御しているのは以下の文です
PermitRootLogin yes
ルートログイン = yes
となっていますので、ルートログインyesと言う設定になっています
これをルートログインno と言う設定に変更しましょう
コマンドモードで[y][y]でコピー
そして[p]で貼り付け
PermitRootLogin yes
PermitRootLogin yes
[i]を押して編集モードにします
#PermitRootLogin yes コメントして
PermitRootLogin no と書き換えます
[Esc]でコマンドモードに戻り
:wq で保存終了
設定が終わったらSSHDの再起動をしましょう
# systemctl restart sshd
これで、ルートログインができるか確認してみます
直でルートログイン出来なくなりましたね
この他にもsshの設定には様々ありますが
それはまた別の機会で
これで、安全なリモートログインが確立しました
ルートアタックは絶えずやってくるので
ここはきちんと抑えときたいところですね
通常、サーバーを操作する場合
実機の前で操作するのはあまりなく、こうしたリモートによって
設定するのが一般的です