リモート ユーザーが 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ではなく、Cyberduck 4.5.1であることが判明しました。間違ったフィンガープリントの問題は、すでにホストキーのフィンガープリントが間違っています最新バージョンにアップデートするとこの問題は修正され、表示される指紋が正しくなりました。