【发布时间】:2020-02-01 16:38:31
【问题描述】:
在 Python 中,我想通过命令 ssh-keygen -y -f 验证一对具有密码短语的公钥/私钥。代码如下,
#/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) 可以用密码回答提示。
但我仍然收到密码提示。
欢迎任何cmets。
【问题讨论】:
-
那么你想“回答提示”如你的标题所说的那样吗?还是您想“避免提示”,正如您的问题正文所说的那样?
-
@Martin Prikryl “回答提示”是最想要的。
-
@Martin Prikryl 你有回答密码提示的解决方案吗?
-
@Martin Prikryl 我也是这样做的,但这不是我需要的。如果我使用
command = "ssh-keygen -y -f {} -P \"{}\"".format(key1, passphrase),我可能会遇到密码为无的情况,那么command将失败。因此,我需要一个解决方案来处理密码短语的提示,无论它是否存在。该解决方案必须处理三种情况, 1. 密码存在并且我将其输入到脚本中; 2. 密码不存在,我在脚本中输入 null; 3. 密码存在,我忘记在脚本中输入。 -
@Martin Prikryl 它已修复。我明白了。如果没有密码,我曾经在 -P 中输入一个空值,而不是双引号。因此,在“参数过多”之后出现异常,“Command 'ssh-keygen -y -q -P -f /tmp/tmp0ktbhszv/id_rsa' 返回非零退出状态 1”。
标签: python python-3.x ssh-keys ssh-keygen