SFTP ホスト キーのフィンガープリントの不一致の原因は何でしょうか?

SFTP ホスト キーのフィンガープリントの不一致の原因は何でしょうか?

リモート ユーザーが Mac OS X の「Transmit」クライアントを使用して初めて SFTP/SSH サーバーに接続しようとしたところ、ホスト キーのフィンガープリントが期待値と一致しないことがわかりました。

ssh-keygen -lf /etc/ssh/ssh_host_dsa_key表示されたフィンガープリントのスクリーンショットがあり、それをおよびの出力と比較しましたがssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub、どちらとも一致しません。

また、フィンガープリントを および の出力と比較しましたが、失敗しましたcut -d ' ' -f 2 < /etc/ssh/ssh_host_dsa_key.pub | base64 -d | sha1sum(cut -d ' ' -f 2 < /etc/ssh/ssh_host_rsa_key.pub | base64 -d | sha1sum使用されているフィンガープリント アルゴリズムが異なるためでしょうか)。

クライアント側のメッセージボックスのタイトルは(英語に翻訳すると)

不明なホストキー< ホスト名 >

そして州

サーバーは不明です。ホストキーのフィンガープリントは< 16オクテット >. (許可) (拒否) [ ] 常に

したがって、フィンガープリントの作成に RSA キーまたは DSA キーが使用されているかどうか、または MD5 または何らかの SHA アルゴリズムが使用されているかどうかは示されません。

リモート ユーザーに表示されるフィンガープリントは、コロンで区切られた 16 個のオクテットで構成されているため、SHA-224 またはそれ以上の数値は使用されていないようです。アップデート: SHA-1 ハッシュでも 20 オクテットになるので、表示されるフィンガープリントはどうやら SHA 形式ではないようです。

ユーザーが接続を許可した場合、サーバー ログにログイン試行が表示されるため、接続は最終的に正しいサーバーに送信されます。したがって、ホスト名/IP はクライアント側で正しく入力されているようです。

別の (まったく関係のない) SFTP サーバーへの接続でも、誤ったフィンガープリントが表示されます (ただし、最初のサーバーとは異なるフィンガープリントです)。

他のホストから(またはサーバー自体からローカルに)OpenSSH を使用して自分でサーバーに接続しようとすると、正しいフィンガープリント(RSA ホスト キーの MD5 フィンガープリント)が表示されます。

サーバーは標準の OpenSSH サーバーを備えた Debian 6 LTS を実行しています。

この指紋の不一致の原因は何でしょうか?この問題をデバッグするにはどうすればよいでしょうか?

答え1

初めて接続する場合、不一致があっても問題ありません。クライアントには、偶然同じホスト名または IP アドレスが関連付けられている、関連のない古いエントリがあっただけです。次のコマンドでクリアします。

ssh-keygen -R $name_or_ip

これを行うと、次回接続したときに、それが RSA、ECDSA などであるかどうかが確実に表示されるはずです。表示されない場合は、Linux の標準である OpenBSD OpenSSH クライアントなどの適切なクライアントを使用するか、-v (または -vvvv などの冗長オプション) を試してください。その後、新しいキーを検証して受け入れます。古いクライアントのキー フィンガープリントの形式は md5 です (新しいクライアントでは sha256 で、ascii-hex ではなく奇妙な base64 形式です)。サーバー側でフィンガープリントを取得する正しい方法は次のとおりです。

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

答え2

使用されていたFTPプログラムはTransmitではなく、Cyber​​duck 4.5.1であることが判明しました。間違ったフィンガープリントの問題は、すでにホストキーのフィンガープリントが間違っています最新バージョンにアップデートするとこの問題は修正され、表示される指紋が正しくなりました。

関連情報