Как ответить на приглашение парольной фразы ssh-keygen из Python? - PullRequest
0 голосов
/ 03 октября 2019

В 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) может ответить на приглашение парольной фразой.

Но я все еще получил приглашение на ввод пароля.

Любые комментарииДобро пожаловать.

1 Ответ

1 голос
/ 04 октября 2019

ssh-keygen имеет -P переключатель для предоставления ключевой фразы:

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

Можно использовать пустую ключевую фразу (-P ""), когда ключ не зашифрован.

И если вы используете неправильную / пустую фразу-пароль (-P "wrong") для зашифрованного ключа, ssh-keygen не удастся - он не будет запрашивать у вас хорошую фразу-пароль снова.

...