sshの使い方についての覚え書き。
目次:
鍵を作成する
$ ssh-keygen -t rsa -C "コメント" Generating public/private rsa key pair. Enter file in which to save the key (/home/{USER}/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/{USER}/.ssh/id_rsa Your public key has been saved in /home/{USER}/.ssh/id_rsa.pub
コメントにはメールアドレスやホスト名などを入れるらしい。
お前らのSSH Keysの作り方は間違っている - Qiita
によると鍵タイプには -t ed25519
を指定すべきらしいが、手元の環境 (Ubuntu 20.04.4 LTS) では -b 2048
のようにオプションを付けても鍵長が256になってしまったのでrsaにした。
鍵の暗号強度を表示する
$ ssh-keygen -l -f id_rsa.pub 2048 SHA256:BcnumevKYATnuh/qocvTM12w88QOSpp9vnq2ke8rcdI COMMENT (RSA)
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! と言われた場合
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:Cijvu9KmqJTXNXeFteTxLXNZt6hPb+FySCFYtIwmWM4. Please contact your system administrator. Add correct host key in /home/{USER}/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/{USER}/.ssh/known_hosts:8 remove with: ssh-keygen -f "/home/{USER}/.ssh/known_hosts" -R "[{HOST}]:{PORT}" ECDSA host key for [{HOST}]:{PORT} has changed and you have requested strict checking.
これはknown_hostsに記録されているホスト鍵が異なる場合に表示される。 以下のようにknown_hostsからホスト鍵を削除する (上記のメッセージ内に表示されている)。
$ ssh-keygen -f "/home/{USER}/.ssh/known_hosts" -R "[{HOST}]:{PORT}"
サーバ側(sshd)
よく使うオプション
-d
- デバッグモード。冗長な情報を出力する。サーバはforkせず、1回の接続しか受け付けない (1回の接続か失敗で終了する)-e
- 出力を syslog ではなく標準エラー出力に送る-D
- 切り離し (detach) を行わず、デーモンにならない
鍵を登録する
sshで接続したいユーザの公開鍵を {USERHOME}/.ssh/authorized_keys
に追記する。
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
注意: 必ず >>
で追記すること。もし >
にすると以前の内容 (登録されていた鍵) がすべて消えてしまう。
rootログインを許可する
公開鍵認証
1. /etc/ssh/sshd_config
で以下の行のコメント (行頭の #
) を消す。
PermitRootLogin prohibit-password
2. root ユーザにパスワードを付ける (公開鍵認証でログインする場合にも必要)。
$ echo "root:rootpassword" | sudo chpasswd
3. 上記の「鍵を登録する」の手順で /root/.ssh/authorized_keys
に公開鍵を追記する。
パスワード認証
もし公開鍵ではなくパスワードでログインさせたい場合には次のようにする。
1. root ユーザにパスワードを付ける (上記参照)
2. /etc/ssh/sshd_config
で以下の行のコメント (行頭の #
) を消し、右側を yes
にする。
PermitRootLogin yes PasswordAuthentication yes