我想使用不需要密码的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
有人可以帮忙吗?
答案 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很棒.......