如何使用SSH密钥通过Paramiko连接到SFTP - Pageant

时间:2014-08-20 08:03:04

标签: python ssh paramiko private-key pageant

我正在尝试使用密码保护的SSH密钥通过Paramiko连接到SFTP。我已将密钥加载到Pageant(我理解Paramiko支持)但我无法解密我的私钥。

我发现这个引用allow_agent=True的示例here,但这似乎不是可以与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)

1 个答案:

答案 0 :(得分:6)

使用PKey.from_private_key_file加载加密密钥时,您必须提供密码短语。

虽然请注意,在使用Pageant时,必须加载。这是使用身份验证代理的关键。但只有SSHClient class支持Pageant。 Transport类本身没有。

您可以按照How to use Pageant with Paramiko on Windows?中的代码进行操作 虽然默认情况下allow_agentTrue,但实际上没有关于代码的特殊

连接并进行身份验证后,使用SSHClient.open_sftp method获取SFTPClient的实例。

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

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