超入門 OpenSSH

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の設定には様々ありますが
それはまた別の機会で

これで、安全なリモートログインが確立しました

ルートアタックは絶えずやってくるので
ここはきちんと抑えときたいところですね

通常、サーバーを操作する場合
実機の前で操作するのはあまりなく、こうしたリモートによって
設定するのが一般的です