とあるUbuntu系Linuxディストリビューションでsshサーバを起動したところ
sshサーバは問題なく起動するのにクライアントが接続できなかった件の対応まとめ。
エラー内容
Ubuntu系では、sshサーバのログは「/var/log/auth.log」に記録されるので確認する。
「Could not load host key」「No supported key exchange algorithms」というエラーが出ていた。
$ tail -f /var/log/auth.log Jul 17 06:35:45 Tsurugi sshd[13940]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key Jul 17 06:35:45 Tsurugi sshd[13940]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key Jul 17 06:35:45 Tsurugi sshd[13940]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key Jul 17 06:35:45 Tsurugi sshd[13940]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key Jul 17 06:35:45 Tsurugi sshd[13940]: fatal: No supported key exchange algorithms [preauth]
原因
コンフィグで指定しているサーバ側の鍵が1つも存在していませんでした。
(1つでもサーバ側の鍵が存在していれば、接続できない状況は発生していなかったと思われる。)
$ cat /etc/ssh/sshd_config ... # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key
対応
セキュリティ的にはdsa/ecdsaは使わない方が良いらしいので、コンフィグからコメントアウトする。
サーバ側の鍵をパスフレーズなしで作成し、sshサーバをリスタートする。
$ sudo vi /etc/ssh/sshd_config ... # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key # HostKey /etc/ssh/ssh_host_dsa_key # HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key $ sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key $ sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key $ sudo systemctl restart ssh