我正在尝试使用受密码保护的 SSH key 通过 Paramiko 连接到 SFTP。我已将 key 加载到 Pageant 中(我知道 Paramiko 支持它)但我无法用它来解密我的私钥。
我找到了这个例子here引用 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)
最佳答案
使用 RSAKey.from_private_key_file
加载加密 key 时,您必须提供密码。 .
但请注意,在使用 Pageant 时,您根本不需要加载 key 。这就是使用身份验证代理的意义所在。但只有 SSHClient
class支持选美。 Transport
类本身没有。
您可以按照How to use Pageant with Paramiko on Windows?中的代码进行操作
尽管 allow_agent
默认为 True
,但实际上代码没什么特别的。
连接并通过身份验证后,使用 SSHClient.open_sftp
method获取您的 SFTPClient
实例。
ssh = paramiko.SSHClient()
ssh.connect(host, username='user', allow_agent=True)
sftp = ssh.open_sftp()
您还需要验证主机 key :
Paramiko "Unknown Server"
关于python - 如何使用 SSH key 通过 Paramiko 连接到 SFTP - Pageant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25399635/