表示されているメッセージは別の問題です。接続しているホストが実際に想定しているホストであることを確認するように求められます。サーバーから、を実行してフィンガープリントを取得できますssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
。その後、初めてリモートで接続するときに、指紋が一致することを確認できます。
ここで実際に見られるホストキーは、中間者攻撃の問題に対処します。おそらくDNSが破壊されており、自分のマシンではなく、競合他社のマシンに接続しています。そのマシンは資格情報を収集し、接続を実サーバーに透過的に転送して、知らないうちに情報を盗みます。ホストキーが一致していることを確認することで、攻撃者が実際にサーバーの公開キーを盗んだ場合を除き、これが発生するのを防ぎます。
ただし、問題は残っています。どのキーが正しいかをどのようにして知るのですか?最初の接続後、公開鍵は~/.ssh/known_hosts
ファイルに保存されるため、その後の接続は問題ありません。ただし、初めて、帯域外でフィンガープリントを取得する方法が必要になるか、「TOFU」モデルの「最初に使用する」を使用します。
ただし、キーとパスワードの両方がこの攻撃によって盗まれる可能性があることを除いて、これはパスワードとキーには何の関係もありません-ある意味では、それはあなたが求めている脆弱性です。
パスワードがキーよりも悪い理由は(少なくとも)3つあります。
- 彼らは総当たりすることができます。ユーザーが選択する一般的な8文字のパスワードには、約30ビットの推測エントロピーがあります。sshの公開鍵と秘密鍵のペアは1024ビット以上です。sshキーを総当たりすることは事実上不可能ですが、自動化されたパスワード推測は常に発生します。
- 彼らはばかげていることができます。ユーザーは、制限が設けられていても、日常的にひどいパスワードを選択し、複数の場所でより難しいパスワードを使用する傾向があります。これは明らかに攻撃を容易にします。
- パスワードはリモートで盗まれる可能性があります。SSHを使用している場合、パスワードはネットワーク上で暗号化されますが、sshサーバーが侵害されたシステムですべてのパスワードをログに記録するシステムに置き換えられることは非常に一般的です。キーを使用すると、秘密キーはローカルシステムに残り、まったく送信されないため、クライアントマシンを実際に侵害することなく盗むことはできません。
さらに、sshキーは次のようなものと一緒に使用すると便利ssh-agent
です。適度なセキュリティを維持しながら、毎回再認証することなく接続するという面倒な操作を行うことができます。
秘密鍵を盗むのに十分なアクセス権を持つユーザーが、ユーザーのパスワードもかなり簡単に盗む可能性があるため、両方を要求することには大きな利点はありません。これ以上のセキュリティが必要な場合は、RSA SecurIDやWiKIDなどの2要素認証システムを検討することを検討してください。