如何通过python脚本运行ssh -vvv主机?

时间:2016-06-22 06:56:25

标签: python shell ssh

我想使用不需要密码的python脚本通过SSH -vvv host命令检查一堆IP地址的身份验证方法(公钥或密码或两者)。

基本上我对以下结果感兴趣:

debug1: Authentications that can continue: publickey,password

这是我尝试过的,但由于要求输入密码,因此无效。

process = subprocess.Popen("ssh -vvv host", shell=True,
    stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output,stderr = process.communicate()
status = process.poll()
print output

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用

ssh -o KbdInteractiveAuthentication=no -o PasswordAuthentication=no -vvv

指示客户端不要尝试键盘交互或密码验证,但服务器仍会发送它支持的方法。如果主机未知(可以使用-o StrictHostKeyChecking=no禁用),它仍可能要求确认。也许您还想要禁用其他身份验证方法listed in the manual

编辑:ssh -o PreferredAuthentications=none也应该有效

答案 1 :(得分:0)

import paramiko
client = SSHClient()
client.load_system_host_keys()
try:
    client.connect('ssh.example.com')
except AuthenticationException as e:
    print ('got exception {}'.format(e.__dict__))
except :
    print ('got exception: NOT AUTH !!!')

现在只需循环多次。不需要子进程等paramiko很棒.......