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

Python-ssh和sftp通过中间计算机,python,ssh,sftp,paramiko,Python,Ssh,Sftp,Paramiko,设备1通过我的网络连接到设备2。设备2还连接到设备3,设备3未直接连接到设备1。从设备1,我希望能够将文件发送到设备2或设备3 目前,我正在使用paramiko建立ssh连接,然后使用sftp将文件从设备1放到设备2上。这不是问题 使用设备2作为中间人,将文件传输到设备3的最佳方式是什么?我知道我可以复制到设备2,然后以某种方式再次复制到设备3,但这似乎效率低下。我应该如何将设备1链接到设备3,这样我就可以简单地使用sftp.put() 我无法更改网络配置,因此请不要建议。您应该使用SSH隧道,

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

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

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

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

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

  • pip安装sshtunnel
  • 使用para作为转发器端口:
  • 样本:

    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)
    

    我想看看有没有什么特定的面料可以帮我@wilburWell我个人不知道用python将设备1直接链接到设备3的方法,因此,如果您创建了一个复制文件的结构任务,您可以在设备1上运行它,目标为设备2,然后在设备2上运行,目标为设备3。对不起,我现在想不出更优雅的方法了谢谢,我不知道织物,但同样的想法基本上是我的备份。我认为有一些方法可以建立一个隧道。希望它能与我所寻找的paramikoJust很好地结合。直到对威尔伯做出回应,我才想到挖隧道。感谢您的帮助。请确认一下,您的示例中的
    server
    是什么?只是
    [主机名,端口]
    ?你的例子没有建立隧道,是吗@Ali Nikneshanserver=(设备2,端口2)。查看完整示例的链接,我只提取了有趣的部分。