【问题标题】:How to run ssh -vvv host through a python script?如何通过 python 脚本运行 ssh -vvv host?
【发布时间】:2016-06-22 06:56:24
【问题描述】:

我想通过 SSH -vvv host 命令使用不需要密码的 python 脚本检查一堆 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

有人可以帮忙吗?

【问题讨论】:

    标签: python shell ssh


    【解决方案1】:

    你可以试试

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

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

    编辑:ssh -o PreferredAuthentications=none 也应该可以工作

    【讨论】:

    • 谢谢。这适用于仅返回一行,但我的 python 脚本仍在运行。您知道返回此行后的停止方法吗?
    • 通信调用后ssh进程应该已经退出,还是通信调用没有返回?无论如何,您可能还应该设置stdin=PIPE,以便在通信调用中将其关闭。
    【解决方案2】:
    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 很棒.......

    【讨论】:

    • 谢谢。但我特别想要 SSH -vvv
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2014-04-02
    相关资源
    最近更新 更多