リモートユーザーがMac OS Xの「送信」クライアントを使用して初めて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を実行しています。
この指紋の不一致の原因は何ですか?この問題をデバッグするにはどうすればよいですか?
使用しているFTPプログラムは送信ではなく、Cyberduck 4.5.1であることがわかりました。間違ったフィンガープリントの問題は、すでに Wrong Host key finger として知られていました。最新バージョンに更新すると、この問題が修正され、表示される指紋が正しくなりました。
初めて接続する場合は、不一致があっても問題ありません。クライアントには、同じホスト名または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