たれながし.info

とあるITエンジニアの備忘録

sshサーバに接続できない「Could not load host key」「No supported key exchange algorithms」

とあるUbuntuLinuxディストリビューション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