如何使用密钥(没有密码)通过paramiko代理进行sftp?

qlzsbp2j  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(383)

与其他合作伙伴一起,我们在获取连接密码方面没有遇到任何问题。这是我们目前用于通过sftp使用密码连接到合作伙伴的代码:

import paramiko

proxy_command = '/usr/bin/ssh ' + proxy_address + ' -p 22 /usr/bin/nc ' + host_address + ' ' + str(host_port)
proxy = paramiko.ProxyCommand(proxy_command)
transport = paramiko.transport.Transport(proxy)
transport.connect(username=username, password=password)
sftp = paramiko.sftp_client.SFTPClient.from_transport(transport)

我们最新的合作伙伴不会与我们共享密码——连接应该完全依赖密钥。我们如何修改上述内容以在代理上实现密钥,而不依赖于使用密码连接到主机?

ao218c7q

ao218c7q1#

如果您要求使用paramiko低级 Transport 同学们,用 pkey 的参数 Transport.connect 方法:

pkey = paramiko.RSAKey.from_private_key_file(filename)

transport.connect(username=username, pkey=pkey)

虽然一般来说,你应该使用高级 SSHClient 改为类:

ssh = paramiko.SSHClient()
pkey = paramiko.RSAKey.from_private_key_file('id_rsa')
ssh.connect(hostname=host_address, sock=sock, username=username, pkey=key)
sftp = ssh.open_sftp()

相关问题