我已经有这个问题好几天了,我不知道出了什么问题。
我有一个使用在 OSX 上运行的 pexpect 的简单 python 脚本,它启动 ssh-keygen 并自动点击返回以生成密钥对,它工作正常。我想在 Windows 上做同样的事情。为了在 Windows 上获取 ssh 和 ssh-keygen,我安装了 OpenSSH for Windows,它允许 ssh 从 cmd 提示符运行,作为使用部分 CYGWIN 支持文件的普通 Windows 程序。我将相同的脚本移植到 Windows 并将 pexpect 更改为 winpexpect 并使用对应的 winspawn 启动子进程,但它在第一个提示时停止。
def generateKeys(self):
print "GeneratingKeys..."
gen = winpexpect.winspawn("ssh-keygen -t rsa")
print gen.expect(":") #This is where it asks for a place to save the keys. retuns 0 if found
print "before: " + gen.before
print "after: " + gen.after
print gen.sendline()
#Next it should expect a prompt for a passphrase but it never reaches it
print gen.expect(":")
print "before: " + gen.before
print "after: " + gen.after
print gen.sendline()
我得到的输出是这样的:
GeneratingKeys...
0
before: Enter file in which to save the key (/home/user/.ssh/id_rsa)
after: :
2
before: Enter file in which to save the key (/home/user/.ssh/id_rsa)
after: :
在这里,它为所有收集数字灰尘的兔子提供了永恒的空间。
我也不明白为什么它在预期的冒号之后得到“:”。
是否有我可以使用的另一个模块可以让我更好地与 Windows 的 OpenSSH 进行通信?