如何回答来自 Python 的 ssh-keygen 密码提示?

How to answer the ssh-keygen passphrase prompt from Python?

在 Python 中,我想通过命令 ssh-keygen -y -f 验证一对 public/private 具有密码的密钥。代码如下,

#/usr/bin/env python3
...................
...................
command = "ssh-keygen -y -f {}".format(key1)
args = bytes("%s\n%s\n" % (psw, psw), encoding='utf8')
proc = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
proc.communicate(input=args)

我以为subprocess.communicate(input=args)可以用密码回答提示。

但我仍然收到输入密码的提示。

欢迎大家提出意见。

ssh-keygen -P switch 提供密码:

command = "ssh-keygen -y -f {} -P \"{}\"".format(key1, passphrase)

当密钥未加密时,可以使用空密码 (-P "")。

如果您使用 wrong/empty 密码 (-P "wrong"),对于加密密钥,ssh-keygen 将失败 – 它不会再次提示您输入正确的密码。