Python - 通过中间计算机的ssh和sftp

时间:2015-12-16 20:15:59

标签: python ssh sftp paramiko

设备1通过我的网络连接到设备2。设备2也连接到设备3,设备3没有直接连接到设备1.从设备1,我希望能够将文件发送到设备2或设备3。

目前,我正在使用paramiko建立ssh连接,然后使用sftp将文件从Device 1放到Device 2上。这不是问题。

使用Device 2作为中间人,将文件传输到设备3的最佳方法是什么?我知道我可以复制到设备2,然后以某种方式再次复制到设备3,但这似乎效率低下。我应该如何将设备1链接到设备3,以便我可以简单地使用sftp.put()

我无法更改网络配置,因此请不要建议。

1 个答案:

答案 0 :(得分:2)

你应该使用SSH隧道, 有不同的选择:

  1. sshtunnelpip install sshtunnel
  2. 使用para作为转发器端口:https://github.com/paramiko/paramiko/blob/master/demos/forward.py
  3. 样品:

    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.WarningPolicy())
    
    try:
        client.connect(server[0], server[1], username=options.user, key_filename=options.keyfile,            look_for_keys=options.look_for_keys, password=password)