Ansibleコントロールノード を Dockerコンテナ でビルドし、リモートサーバに公開鍵認証でSSH接続してインストール済みのパッケージの一覧を取得するまでのトライアンドエラーの間の一幕です。
リモートサーバに公開鍵認証でSSH接続しようとしたのにパスワードを求められる現象に遭遇したのでメモ。
経緯・状況
経緯・状況としては以下のようなシチュエーションです。
- Ansible の試験をしたい
- Dockerコンテナ を Ansible のコントロールノードとして、外部ネットワークのリモートサーバに接続したい
- リモートサーバへのSSH接続には公開鍵認証を使用
今回は上述の3番目の部分で引っかかったお話です。
現象
# ssh -i ~/.ssh/id_rsa SSH_REMOTEUSER@XXX.XXX.XXX.XXX
The authenticity of host 'XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX)' can't be established.
ECDSA key fingerprint is SHA256:ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'XXX.XXX.XXX.XXX' (ECDSA) to the list of known hosts.
{ユー??? SSH_REMOTEUSER@XXX.XXX.XXX.XXX's password:
※一部分文字化けしていてメッセージが分からないところがありました。
公開鍵認証のはずだったのに、最後の行のようにパスワード認証を求められてしまいました。
対処
Warning: Permanently added 'XXX.XXX.XXX.XXX' (ECDSA) to the list of known hosts.
の警告メッセージを検索したところ、「 known_hosts
ファイルにログイン対象であるリモートサーバに対して鍵が重複してしまったこと」が原因の模様。
そのため、一覧から削除します。
# vi /root/.ssh/known_hosts
XXX.XXX.XXX.XXX ecdsa-sha2-nistp256 ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(以下略
今回は known_hosts
ファイルに1行しか既述がなく、また先頭のIPアドレスもログイン対象のリモートサーバのものだったので、 dd
で削除して :wq
で保存。
これで再度挑戦。
# ssh -i ~/.ssh/id_rsa SSH_REMOTEUSER@XXX.XXX.XXX.XXX
The authenticity of host 'XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX)' can't be established.
ECDSA key fingerprint is SHA256:ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'XXX.XXX.XXX.XXX' (ECDSA) to the list of known hosts.
Last login: Wek Mon dd hh:ii:ss yyyy from YYY.YYY.YYY.YYY
#
ログイン成功、本来意図した挙動になりました。