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