我正在尝试使用密码保护的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)
答案 0 :(得分:6)
使用PKey.from_private_key_file
加载加密密钥时,您必须提供密码短语。
虽然请注意,在使用Pageant时,不必须加载键。这是使用身份验证代理的关键。但只有SSHClient
class支持Pageant。 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()
您还需要验证主机密钥:
Paramiko "Unknown Server"