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のインストール
      $ 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-idcommand 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
    • sshdの再起動で設定反映
      $ systemctl restart sshd

設定後の接続はポートを指定してssh admin@192.168.100.101 -p 5123とする。