Closed1

手動でSSHログインできるがシェルスクリプトからのSSHログインに失敗する

Junichi HashimotoJunichi Hashimoto

手動でSSHログインできるが、シェルスクリプトからのSSHログインには失敗するケース。

手動接続は「IPアドレス」で、シェルスクリプト は「ホスト名」で接続していたことにより、known_hosts に記録されたフィンガープリントのエントリが一致しなかったことが原因。

手動でのSSHログインの際にknown_hostsにはIPアドレスでエントリされる。この状態で「ホスト名」により接続すると未知のサーバーと判定され、フィンガープリントの再確認が必要となる。

$ cat known_hosts
xxx.xxx.xxx.xxx ssh-ed25519 AAAA...=

シェルスクリプトからのSSHログインは、ホスト名での接続だった。手動の場合はフィンガープリントの再確認をパスすれば接続できるが、スクリプトの場合はSSH接続中に対話が必要な状況になると、失敗する。

解決策の一つは、ホスト名でもエントリしておくこと。事前にホスト名でSSHログインしておけばよい。

ssh ssh-user@dest-server
The authenticity of host 'dest-server (xxx.xxx.xxx.xxx)' can't be es
ED25519 key fingerprint is SHA256:.......
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:1: xxx.xxx.xxx.xxx
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

フィンガープリントの確認をパスすると、ホスト名でknown_hostsにエントリされる。これで、ホスト名での接続の際にフィンガープリントの再確認は発生しない。

$ cat known_hosts
xxx.xxx.xxx.xxx ssh-ed25519 AAAA...=
dest-server ssh-ed25519 AAAA...=
このスクラップは3ヶ月前にクローズされました