我使用中间主机 2 从主机 1 连接到主机 3。
主机1 --> 主机2 --> 主机3
这是我的代码,运行良好:
# SSH to host2
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host2, username=host2_username)
# SSH to host3
vmtransport = ssh.get_transport()
dest_addr = (host3, 22)
local_addr = (host2, 22)
vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr=dest_addr, src_addr=local_addr)
ssh3 = paramiko.SSHClient()
ssh3.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh3.connect(host3, username=host3_username, sock=vmchannel)
现在我想从 host3 通过 SSH 连接到第四台主机:
# SSH to host4
vmtransport = ssh3.get_transport()
dest_addr = (host4, 22)
local_addr = (host3, 22)
vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr=dest_addr, src_addr=local_addr)
ssh4 = paramiko.SSHClient()
ssh4.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh4.connect(host4, username=host4_username, sock=vmchannel)
由于身份验证错误,上次 SSH 失败。
当我从主机 4 手动 SSH 到主机 3 时,它工作正常。
我注意到 host3 的公钥存储在 .ssh 文件夹下。
我怎样才能让paramiko知道使用host3上的公钥通过SSH连接到host4。
换句话说,paramiko 是否依赖 host1 下的公钥来执行到 host4 的嵌套 SSH?如果答案是肯定的,我是否也需要将host4的公钥存储在host1上?