web-dev-qa-db-ja.com

sshキーが特定のホストに対して有効であることを確認する方法は?

特定のホストに対してsshパスフレーズで保護されたIDファイルの有効性をテストしたいと思います。パスフレーズを実際に提供したくないし、必ずしもそれを知っている必要もありません。IDファイル自体が問題のリモートホストにもまったく適用できないことを確認するだけです。

次の例を検討してください。

ssh -i .ssh/right-key.pem user@some_Host
Enter passphrase for key '.ssh/right-key.pem': 

ssh -i .ssh/wrong-key.pem user@some_Host
Permission denied (publickey).

有効なキーを使用すると、パスフレーズの入力を求められます。無効なキーを使用すると、プロンプトは表示されませんが、すぐにエラーが返されます。 sshは、これらのキーの1つが適用され、もう1つは適用されないことを知っています。このテストを実行する簡単な方法が必要です。

どうすればよいですか?ありがとうございました!

2
jorge rodriguez

これはおそらく最もエレガントではない解決策ですが、それは私が当分の間理解できたものです

ssh -v -o batchmode=yes -i .ssh/right-key.pem user@some_Host 2>&1 | grep 'Server accepts key'

wrong-key.pemで同じことを行うと、grepミスが発生するため、エラーステータスが返されます。

誰かがそれらを持っているなら、私はより良い答えを歓迎します。

1
jorge rodriguez