Как подключиться к 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)

2 ответа

Решение

При загрузке зашифрованного ключа с помощью from_private_key_file,

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

Вы должны следовать коду в Как использовать Pageant с Paramiko в Windows?

После подключения и проверки подлинности используйте SSHClient.open_sftp метод, чтобы получить свой экземпляр SFTPClient,

Также обратите внимание, что allow_agent является True по умолчанию.

Это сработало для меня

      
privatekeyfile = 'path to key'
mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)
ssh_client = paramiko.SSHClient()
ssh_client.load_system_host_keys()
ssh_client.connect(hostname='host', username='user', allow_agent=True, pkey=mykey)

ftp_client = ssh_client.open_sftp()

print(ftp_client.listdir('/'))
Другие вопросы по тегам