リモートホストから送信されたECDSAキーのフィンガープリントを確認する[終了]


24

サーバーにSSH接続しようとすると、よく知られている警告メッセージが表示されます。

$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 ECDSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:10
ECDSA host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.

そして、私はそのようなサーバーのIPを変更したので、理由を知っています。しかし、そうでない場合、リモートホストから送信されたECDSAキーのフィンガープリントをどのように確認できますか?

私はそうしようとしました:

echo -n ipofthehost | sha256sum

しかし、私は同じ指紋を取得しません。また、awsのような「hostname、ip」も試しましたが、一致しませんでした。

known_hostsファイルから入り口を削除してからsshを再試行すると、成功して次のように表示されます。

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

それでは、指紋を取得するためにsha256sumを適用し、それを確認する方法は何ですか?


2
既知の適切な値がないと、確認できません。SSHdを初めて起動してキーが生成されたときにのみ書き留め、既知の適切な値と照合します。

あなたの質問を編集しました。このサイトでは、専門的なビジネス環境に関する質問のみを受け付けています。ここではホームネットワーキングの質問はトピック外です。編集で質問を保存しようとしました。現在、この理由であなたの質問に反対する投票があります。
ペテルはモニカを

@ user186340「SSHdを最初に起動したときにのみ書き留める」というのは本当のようです。SSHdを実行しているマシンにアクセスできる場合は/etc/ssh/ssh_host_ecdsa_key.pub、指紋を取得することができます。今やりました。
jamadagni

回答:


12

公開キーフィンガープリントは、IP文字列の単純なハッシュではありません。

リモートホストの公開キーを取得するには、ssh-keyscan <IP>通常のツールを使用して指紋を抽出します(ssh-keygen -lf <public_key_file>)。

最後に、known_hostsファイルの現在の指紋と比較できますssh-keygen -l -F <domain_or_ip>


2
SSH経由で接続し、初めてecdsaキーを強制すると(ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' william@my.server)、43桁の英数字の指紋(ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.)が得られますが、実行するssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pubと32文字の16進数が得られるのはなぜですか?
ウィリアムタレル

1
@WilliamTurrellこれは、サーバーが古い(おそらくopenSSH 6.8以前の)バージョンを持っている必要があるために発生しますssh-keygen(または、サーバープロバイダーが時間に追いついておらず、新しいSHA256の代わりにmd5ハッシュのみを提供します)。ここにリストされた回避策があります:superuser.com/questions/929566
SeldomNeedy

9

もう少し詳しく:警告メッセージはリモートホストから送信されたECDSAキーのフィンガープリントを参照しているため、ホストの公開(ecdsa)キーに関する情報を収集します。

ssh-keyscan -t ecdsa ip_or_hostmane > ecdsa_file_to_compare

その後、known(hosts)ファイルのどこで公開(ecdsa)キーが存在するかを確認できます。

ssh-keygen -l -F ipofhost

フィンガープリントを比較する場合は、known_hostsファイルの内容(このホストに関連するエントリのみ)を配置する必要があります。ecdsa_file_from_known_hostsと呼び、次のように比較できます。

ssh-keygen -lf ecdsa_file_to_compare
ssh-keygen -lf ecdsa_file_from_known_hosts

そして、同じハッシュを表示するかどうかを確認します。

もちろん一致しません。そのため、警告メッセージが表示されます(sshはこの一致を内部的にチェックします)。ipの変更について確信している場合(中間者攻撃を受けていない場合)、known_hostsファイル内のそのホストのエントリを削除することができます。そのようなファイルに追加されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.