10

我正在尝试使用密码保护的 SSH 密钥通过 Paramiko 连接到 SFTP。我已将密钥加载到 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)
4

1 回答 1

9

在使用RSAKey.from_private_key_file.

虽然请注意,在使用选美时,您根本不必加载密钥。这就是使用身份验证代理的意义所在。但只有班级支持选美。类本身没有。SSHClientTransport

您可以按照如何在 Windows 上将 Pageant 与 Paramiko 一起使用中的代码进行操作?
尽管默认情况下allow_agentTrue这样,但代码实际上并没有什么特别之处

连接并通过身份验证后,使用该SSHClient.open_sftp方法获取您的SFTPClient.

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

您还需要验证主机密钥:
Paramiko "Unknown Server"

于 2014-08-20T14:28:20.317 回答