为了账号安全,请及时绑定邮箱和手机立即绑定

使用Paramiko实现跳转主机(端口转发)所涉及的主机/IP地址和端口说明

使用Paramiko实现跳转主机(端口转发)所涉及的主机/IP地址和端口说明

手掌心 2022-10-06 19:16:15
我正在尝试设置与 Paramiko 的跳转主机连接。这是我的设置~/.ssh/configHost jump.csail.mit.edu  GSSAPIAuthentication yes  GSSAPIKeyExchange yes  VerifyHostKeyDNS yesHost *.csail.mit.edu !jump.csail.mit.edu 128.52.* 128.30.* 128.31.*  ProxyCommand ssh -W %h:%p jump.csail.mit.edu  GSSAPIAuthentication yes  GSSAPIDelegateCredentials yes  GSSAPIKeyExchange yes如果我从终端连接它就可以工作。我还为 Paramiko 跳转主机连接找到了这段代码,我想知道我应该根据上面的 ssh 配置设置设置什么jumpbox_public_addr?jumpbox_private_addrimport osimport paramikossh_key_filename = os.getenv('HOME') + '/.ssh/id_rsa'jumpbox_public_addr = '168.128.52.199'jumpbox_private_addr = '10.0.5.10'target_addr = '10.0.5.20'jumpbox=paramiko.SSHClient()jumpbox.set_missing_host_key_policy(paramiko.AutoAddPolicy())jumpbox.connect(jumpbox_public_addr, username='root', key_filename=ssh_key_filename)jumpbox_transport = jumpbox.get_transport()src_addr = (jumpbox_private_addr, 22)dest_addr = (target_addr, 22)jumpbox_channel = jumpbox_transport.open_channel("direct-tcpip", dest_addr, src_addr)target=paramiko.SSHClient()target.set_missing_host_key_policy(paramiko.AutoAddPolicy())target.connect(target_addr, username='root', key_filename=ssh_key_filename, sock=jumpbox_channel)stdin, stdout, stderr = target.exec_command("ifconfig")for line in stdout.read().split(b'\n'):  print(str(line))target.close()jumpbox.close()
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

jumpbox_public_addr是你的跳转服务器的地址,应该是什么jump.csail.mit.edu

jumpbox_private_addr(src_addr参数Transport.open_channel) 是jump.csail.mit.edu到目标服务器的连接的源地址。一般来说,您并不关心这一点(因为您不关心大多数 TCP 连接的源地址和端口)。它绝对不应该是端口 22。下面应该告诉服务器使用默认值:

src_addr = ("0.0.0.0", 0)


查看完整回答
反对 回复 2022-10-06
  • 1 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信