有没有一种程序化的方法可以测试ssh是否可以使用公钥进行身份验证?我想做这样的事情(最好是在bash中,但也可以考虑Python解决方案):
ssh-test-thingy user@host || echo "could not authenticate using publickey"
当 ssh-test-thingy
在远程主机上找不到匹配的公钥时,会返回非零的退出状态。
有没有一种程序化的方法可以测试ssh是否可以使用公钥进行身份验证?我想做这样的事情(最好是在bash中,但也可以考虑Python解决方案):
ssh-test-thingy user@host || echo "could not authenticate using publickey"
当 ssh-test-thingy
在远程主机上找不到匹配的公钥时,会返回非零的退出状态。
我会传递选项-o BatchMode=yes
到ssh命令中,看看是否起作用。这将禁用提示输入密码,我认为在实践中相当于您想知道是否可以通过密钥进行身份验证。 ssh-test-thingy
可以像以下示例一样编写为bash脚本:
exec ssh -o BatchMode=yes "$@" true
这将简单地传递用户@主机(和任何其他参数),并尝试在远程主机上运行true
,如果成功则立即返回成功状态代码(0)。
exec
的目的是什么? - pihentagyexec
用 ssh 进程替换当前 shell 进程。这是可以的,因为在启动 ssh 后不再需要 shell;程序的返回值应该是 ssh 的返回值。你可以在没有 exec 的情况下返回 ssh 的返回值,但是为什么要多生成一个无用的进程呢? - John Zwinck