DBサーバを終了したのち、新しく別のサーバーを同じIPアドレスで立て、VSCodeで踏み台からDBサーバにアクセスしようとしたところ、
"DB-server"は接続を確立できません
とのエラーがでました。
その対処を備忘録として残します。
背景とエラー内容
.ssh/config
は以下のように設定しています。
.ssh/config
Host <踏み台>
HostName XXX.XXX.XXX.XXX
User <user>
IdentityFile "/path/to/privatekey"
Host <DBサーバー>
HostName YYY.YYY.YYY.YYY
User <user>
IdentityFile "/path/to/privatekey"
ProxyJump <踏み台>
VSCodeだとエラーが見づらいので、PowerShellからssh <DBサーバー>
をすると以下のようなエラーを見ることができます。
PS C:\Users\koin3z> ssh <DBサーバー>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:6xq+etv23U6j5IS6rhEWI0ZaPSeo4DiMPlAjryxzOeELk.
Please contact your system administrator.
Add correct host key in C:\\Users\\koin3z/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\koin3z/.ssh/known_hosts:15
Host key for YYY.YYY.YYY.YYY has changed and you have requested strict checking.
Host key verification failed.
解決
DBサーバーのホストキーが以前と違うために、セキュリティ上の懸念からSSHが接続を拒否しているようです。
どうやら、新しいインスタンスを再作成したときやIPアドレスの変更した際によく見られるエラーなんだとか。
そのため、ローカルのknown_hosts
ファイルに保存されている古いホストキーを以下コマンドで削除します
コマンドプロンプトやPowerShellで
ssh-keygen -R <hostname>
該当するホストキーを削除
PS C:\Users\koin3z> ssh-keygen -R YYY.YYY.YYY.YYY
# Host YYY.YYY.YYY.YYY found: line 13
# Host YYY.YYY.YYY.YYY found: line 14
# Host YYY.YYY.YYY.YYY found: line 15
C:\Users\koin3z/.ssh/known_hosts updated.
Original contents retained as C:\Users\koin3z/.ssh/known_hosts.old
その後、SSHすると無事繋がります。
無事つながった
PS C:\Users\koin3z> ssh <DBサーバー>
The authenticity of host 'YYY.YYY.YYY.YYY (<no hostip for proxy command>)' can't be established.
ED25519 key fingerprint is SHA256:6xq+etv23U6j5IS6rhEWI0ZaPSeo4DiMPlAjryxzOeELk.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'YYY.YYY.YYY.YYY' (ED25519) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket
てっきりネットワークやホスト側の設定ミスかと思っていましたが、クライアントの方だとは思いませんでした。おわり。