2010-09-30 46 views
4

我将通过python脚本测试是否已设置无密码ssh登录。 如果我运行正常的ssh命令,那么它将等待一段时间接受密码。 有没有一种方法,只要ssh要求输入密码,ssh命令就应该返回一个错误。检查是否已设置无密码访问

有没有可能做到这一点?

回答

7

ssh命令接受相当大的一组选项,所以假设你的Python代码调用shell命令执行以下操作:

ssh -oNumberOfPasswordPrompts=0 <host> "echo hello" 

这将立即失败,如果该键尚未建立,瞬间如果他们有,则完成,这是命令传递给主机的原因。这给你一个简单的测试。

+1

我猜'-oBatchMode = yes'也有效。我不知道BatchMode是否也会跳过其他人为干预。 – isaaclw 2012-08-13 14:49:22

1

如果您未将密码传递给SSHClient.connect()方法并找不到工作密钥,则paramiko将提高AuthenticationException