sshd が起動しない(sshd: no hostkeys available — exiting.)
サーバーの管理は、Cockpitで管理していてサービスのメニューを確認すると「cloud-init」が起動に失敗していたので、手動で起動するとSSHのパスワード認証でログインできなくなった。
複数のサーバーも作らないので「cloud-init」は停止しても、SSHのパスワード認証方式でログインできない状況は変わらないので、「cloud-init」関係のサービスを削除して、sshも下記のように再インストールしました
# ssh関係を一旦削除 $ sudo dnf remove openssh openssh-clients openssh-server # sshの設定ファイルのディレクトリは、リネームしておく $ sudo mv /etc/ssh /etc/ssh_old # ssh関連をインストール $ sudo dnf install openssh openssh-clients openssh-server systemtap
再インストール後ですが、sshdを起動すると下記のエラーで、起動できなくなりました
# sshd を実行すると起動に失敗します $ sudo systemctl restart sshd.service Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xeu sshd.service" for details. # エラーの内容は以下となります $ sudo journalctl -xeu sshd.service Feb 08 12:38:31 example.com sshd[20073]: sshd: no hostkeys available -- exiting. Feb 08 12:38:31 example.com systemd[1]: sshd.service: Main process exited, code=exited, status=1/FAILURE Subject: Unit process exited Defined-By: systemd Support: https://access.redhat.com/support An ExecStart= process belonging to unit sshd.service has exited. The process' exit code is 'exited' and its exit status is 1. Feb 08 12:38:31 example.com systemd[1]: sshd.service: Failed with result 'exit-code'. Subject: Unit failed Defined-By: systemd Support: https://access.redhat.com/support The unit sshd.service has entered the 'failed' state with result 'exit-code'. Feb 08 12:38:31 example.com systemd[1]: Failed to start OpenSSH server daemon. Subject: A start job for unit sshd.service has failed Defined-By: systemd Support: https://access.redhat.com/support A start job for unit sshd.service has finished with a failure. The job identifier is 12726 and the job result is failed.
原因がわからず、設定ファイルを見直したり、再インストールしても駄目でした。よくよくログを見ると「sshd: no hostkeys available — exiting.」となっています。SSHのホスト鍵がないので作成しないとエラーとなるみたいです
SSHのホスト鍵は「ssh-keygen -A」で作成します。「A」のオプションは、ホスト鍵(/etc/ssh/ssh_host_key、/etc/ssh/ssh_host_dsa_key)を作成されます
$ sudo ssh-keygen -A ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
SSHのホスト鍵を作成すると、無事に起動したので、SSHをパスワード認証・ポート変更・ルートログインをできないように変更しました
$ sudo vim /etc/ssh/sshd_config Port 6522 PermitRootLogin no PasswordAuthentication yes # 設定を変更したら再起動します $ sudo systemctl restart sshd
※後々考えると、sshのディレクトリをリネームしたので、ホスト鍵も無くなったので、「sshd: no hostkeys available — exiting.」のエラーとなった思います。
「cloud-init」を削除してもパスワード認証できなかったのは、「/etc/ssh/sshd_config.d/」以下にcloud-initが設定ファイルを追加されていたのが原因のように思います。設定ファイルは削除したので、これ以上調査できないけど、パスワード認証がOffの設定が追加されたと思います
ディスカッション
コメント一覧
まだ、コメントがありません