![如何验证 ssh 密钥对于给定主机是否有效?](https://linux22.com/image/1607342/%E5%A6%82%E4%BD%95%E9%AA%8C%E8%AF%81%20ssh%20%E5%AF%86%E9%92%A5%E5%AF%B9%E4%BA%8E%E7%BB%99%E5%AE%9A%E4%B8%BB%E6%9C%BA%E6%98%AF%E5%90%A6%E6%9C%89%E6%95%88%EF%BC%9F.png)
我想针对给定主机测试受 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 未命中,因此返回错误状态。
如果有人有更好的答案,我欢迎。