12

有没有办法以编程方式测试 ssh 是否可以使用公钥进行身份验证?我想做这样的事情(最好在 bash 中,但我对 python 解决方案持开放态度):

ssh-test-thingy user@host || echo "could not authenticate using publickey"

如果远程主机上没有匹配的公钥,则wheressh-test-thingy返回非零退出状态。

4

1 回答 1

18

我会将选项传递-o BatchMode=yes给 ssh 并查看它是否有效。它将禁用密码提示,我认为这在实践中等同于您希望找出是否可以通过密钥进行身份验证。 ssh-test-thingy可以写成这样的 bash 脚本:

exec ssh -o BatchMode=yes "$@" true

这将简单地传递 user@host(和任何其他参数),并尝试true在远程主机上运行,​​如果它工作将立即返回成功的状态代码 (0)。

于 2011-04-24T02:04:22.373 回答