SSH経由でアクセスしているサーバーがあります。認証は秘密鍵でのみ許可されます。通常、PuTTY経由でログインすると、最初にユーザー名の入力が求められ、次にキーのパスフレーズの入力が求められます。好奇心から、私は新しい秘密鍵を作成しましたが、これはユーザーにとっては無効であるはずであり、パスフレーズもそれに使用しています。驚いたことに、ユーザー名を指定すると、パスフレーズの入力を求められる前に、サーバーにログインしようとしたキーが拒否されました。
秘密鍵のパスフレーズがまだ提供されていない場合、SSHサーバーは秘密鍵が正しくないことをどのようにして知ることができるのでしょうか。
接続中、クライアントは利用可能なすべてのキーのフィンガープリントをサーバーに連続的に送信します。
サーバーがクライアントに有効なキーが見つかったときに信号を送ると、クライアントはそれらを使用し、必要に応じてパスフレーズを要求します。
デバッグオプションを指定してsshを実行してみます。
ssh -o LogLevel=DEBUG3 user@dest
指紋を探す
ssh-keygen -l -f .ssh/id_rsa
行ごとにauthorized_keysをチェックするには:
while read line;do
ssh-keygen -l -f <(echo "$line")
done <.ssh/authorized_keys