SSHの設定方法
SSHとは?
Secure Shell(セキュアシェル)。
サーバー管理を楽にしたい。いちいちサーバのとこに行って、操作するのが面倒。
⇒リモートで操作したろ!
というときに使うプロトコル。
Telnetもあるが、こちらは暗号化なし(セキュリティが不安)。
安全に接続するには、SSHを用いる。
Windowsのリモートデスクトップ(RDP)の簡易版みたいなイメージかと。
サーバー管理のみなら、RDPのようにGUIなど様々な高機能は不要。
参考:RDP、VNC、SSH、Web管理……リモートコンソールをまとめると「Terminals」に:ITプロ必携の超便利システム管理ツール集(10) - @IT
主な接続方法は、パスワード認証方式と公開鍵認証方式がある。
参照元:[OpenSSH] SSHの2つの認証方式の違い - Life with IT
パスワード認証方式
メリット
サーバ側にあるアカウントのパスワードを知っていればよいのでクライアント側で特別な作業は不要
デメリット
暗号化されているとはいえ、パスワードがネットワーク上を流れるのでパスワードを盗まれる可能性がないとはいえない。
そもそもパスワードが第三者に知られてしまえば効果がない。公開鍵認証方式
メリット
ネットワーク上をパスワードが流れる心配がないのでパスワード認証方式より安全
デメリット
前もってクライアントの鍵ペア(公開鍵、秘密鍵)を作成する必要があり、また公開鍵を接続先サーバに「安全に」届けておく必要があるのでパスワード認証に比べて最初の設定が面倒。
設定方法
クライアント(自分のPC)側と サーバー側で設定をする。
参照元:ssh接続を鍵認証で行う
ざっくり手順
- サーバー側
ssh
のインストール
- クライアント側
- キーペア(秘密鍵と公開鍵)の作成
- クライアント側PCにキーペアの登録(しなくてもOK)
- サーバー側に公開鍵を送って登録
- サーバー側
- sshの設定
- Portの変更
- rootでのログインを禁止する
- パスワードでのログインを禁止する
- sshの設定
手順
- サーバー側
ssh
のインストール
$ apt update
$ apt install ssh
- クライアント側
- キーペア(秘密鍵と公開鍵)の作成
~/.ssh
ディレクトリにキーペア(秘密鍵と公開鍵)を作る。
鍵の名前は任意。ここでは「client_rsa」。
$ ssh-keygen -f client_rsa -t rsa -b 2048
- クライアント側PCにキーペアの登録(しなくてもOK)
ssh接続時に
-i
オプションを不要にするための設定なので、しなくてもOK。
Macの場合:$ ssh-add -K ~/.ssh/client_rsa
- サーバー側に公開鍵を送って登録
$ ssh-copy-id -i ~/.ssh/client_rsa.pub サーバーのユーザー名@サーバーのIPアドレス
例)$ ssh-copy-id -i ~/.ssh/client_rsa.pub admin@192.168.100.101
ssh-copy-id
でcommand not found
なら$ brew install ssh-copy-id
でインストール。 (HomebrewのUpdateに時間かかるかも)
ssh-copy-id
を使用せずに手動コピーでやってもOK。
~/.ssh/authorized_keys
に鍵が登録されてれば設定完了。
- キーペア(秘密鍵と公開鍵)の作成
接続確認
ssh接続時に
-i
オプションを不要にするための設定なので、しなくてもOK。
Macの場合:$ ssh-add -K ~/.ssh/client_rsa
この設定をしてたらssh admin@192.168.100.101
で接続可能。
してなかったら、これで→ssh -i ~/.ssh/client_rsa admin@192.168.100.101
安全な接続のために、、
- サーバー側
- sshの設定
$ vi /etc/ssh/sshd_config
にて設定ファイルを編集。
デフォルトのPortだと、Web上を巡回する悪いロボットに攻撃されるかも。
root使用が有効だともしログインされてしまった時に致命的になるかも。
などの対策!- Portの変更
Port 5123
(ウェルノウンポートを避けて適当に設定) - rootでのログインを禁止する
PermitRootLogin no - パスワードでのログインを禁止する
PasswordAuthentication no
- Portの変更
sshd
の再起動で設定反映
$ systemctl restart sshd
- sshの設定
設定後の接続はポートを指定してssh admin@192.168.100.101 -p 5123
とする。