如何验证 ssh 密钥对于给定主机是否有效?

如何验证 ssh 密钥对于给定主机是否有效?

我想针对给定主机测试受 ssh 密码保护的身份文件是否有效。我并不想实际提供密码,也不一定知道密码,只是想验证身份文件本身是否适用于相关远程主机。

请考虑以下示例:

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

这也许不是最优雅的解决方案,但这是我暂时能想到的

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

执行相同的操作wrong-key.pem将导致 grep 未命中,因此返回错误状态。

如果有人有更好的答案,我欢迎。

相关内容