またまた、/var/log/messages に
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
というエラーが記録されてることに気づきました。
この現象は以前にも FreeBSD 8.3 → 8.4 に更新した後、一台のサーバーで発生し、その時は、30 分おきに /var/log/messages に記録されていました。
この時は、sshd のコンフィグレーションが新しくなっており、実際 ssh_host_ecdsa_key が存在していなかったため、エラーが発生することは正常でした。この時は、host key を生成して解決。
今回は、ssh_host_ecdsa_key が存在しているにもかかわらずエラーが発生しており、発生するタイミングは sshd が使用される時だけのようです。
# service sshd restart Performing sanity check on sshd configuration. Could not load host key: /etc/ssh/ssh_host_ecdsa_key Stopping sshd. Waiting for PIDS: 1176. Performing sanity check on sshd configuration. Could not load host key: /etc/ssh/ssh_host_ecdsa_key Starting sshd. Could not load host key: /etc/ssh/ssh_host_ecdsa_key
サービスを起動したり、ssh でホストに接続しようとするタイミングでエラーが記録され、ssh でのリモート接続に影響はありません。おそらく使えないアルゴリズムは捨てて、別のアルゴリズムのキーを使っているんでしょう。
では、どうするか?
前回発生した現象に関してはたくさん方があるのですが、host key ファイルが存在しているのに “Could not load host key” になる情報を見つけるのはキーワード的に難しい。
そして、安易な方法に頼ることにしました。
- /etc/ssh/ssh_host_ecdsa_key を消す
- sshd を再起動する。
# service sshd restart Performing sanity check on sshd configuration. Could not load host key: /etc/ssh/ssh_host_ecdsa_key Stopping sshd. Generating ECDSA host key. 256 SHA256:6VHd+37oQ+7xRoHwTHFn64EUjUOOfEGL8MoT+zMxC0E root@ome.lifewithunix.jp (ECDSA) Performing sanity check on sshd configuration. Starting sshd.
この方法で良かったようで、sshd が起動するタイミングで新しい ssh_host_ecdsa_key が生成され、エラーが出なくなりました。
ファイルが存在しているのだから、wrong key とか currupted key など、もっとわかりやすいメッセージを出して欲しいものです。