Как подключиться к SFTP через Paramiko с ключом SSH - Pageant

Я пытаюсь подключиться к SFTP через Paramiko с ключом SSH, защищенным паролем. Я загрузил ключ в Pageant (который, как я понимаю, поддерживается Paramiko), но не могу заставить его расшифровать свой закрытый ключ.

Я нашел этот пример здесь, который ссылается на allow_agent=True, но это не так не является параметром, который можно использовать с SFTPClient.

Кто-нибудь может подсказать, можно ли таким образом работать с Paramiko и Pageant?

Это мой код на данный момент, который вызывает PasswordRequiredException

privatekeyfile = 'path to key'
mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)
transport = paramiko.Transport(('host', 'port'))
transport.connect('username',pkey = mykey)
sftp = paramiko.SFTPClient.from_transport(transport)

person Tim S_    schedule 20.08.2014    source источник


Ответы (1)


Вы должны указать парольную фразу при загрузке зашифрованного ключа с использованием RSAKey.from_private_key_file.

Однако обратите внимание, что вам не нужно загружать ключ вообще при использовании Pageant. В этом смысл использования агента аутентификации. Но только класс SSHClient поддерживает Pageant. Класс Transport сам по себе не работает.

Вы можете следовать коду в разделе Как использовать Pageant с Paramiko в Windows?
Хотя по умолчанию allow_agent равно True , на самом деле в этом коде нет ничего особенного.

После подключения и аутентификации используйте метод SSHClient.open_sftp< /a>, чтобы получить экземпляр класса SFTPClient.

ssh = paramiko.SSHClient()
ssh.connect(host, username='user', allow_agent=True)
sftp = ssh.open_sftp()

Вам также потребуется проверить ключ хоста:
Неизвестный сервер Paramiko

person Martin Prikryl    schedule 20.08.2014