【问题标题】:Paramiko hang when use ssh-keygen command使用 ssh-keygen 命令时 Paramiko 挂起
【发布时间】:2012-01-25 21:18:00
【问题描述】:

我正在创建一个用户并想为该用户设置 ssh 密钥

我的脚本是

import paramiko

ssh_conn = paramiko.SSHClient()
ssh_conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_conn.load_system_host_keys()
ssh_conn.connect('localhost', username='test', password='test')

cmd = 'ssh-keygen -t dsa'

stdin, stdout, stderr = ssh_conn.exec_command(cmd)
stdin.write('\n')
stdin.flush()
stdin.write('\n')
stdin.flush()
stdin.write('\n')
stdin.flush()

print "Output: ", stdout.read()

但它似乎不起作用

当我将它作为单个语句复制过去在 python 控制台上运行时,它可以工作,但是当我作为单个 python 脚本运行它时,它会挂在最后一行 print "Output: ", stdout.read()

提前感谢您的帮助:)

【问题讨论】:

    标签: python unix ssh paramiko


    【解决方案1】:

    在尝试阅读 stdout 问题之前:

    stdin.channel.shutdown_write()
    

    另请参阅this question 以供参考。

    【讨论】:

    • 嗨@mac,如果我不会在stdin.channel.shutdown_write() 之后写stdout.read() 并执行一些其他任务,那么那时它不会生成.pub 文件。意味着有什么方法可以检查该命令是否完成执行?