【问题标题】:Cannot create ProxyCommand object in Python无法在 Python 中创建 ProxyCommand 对象
【发布时间】:2014-06-18 16:26:05
【问题描述】:

我需要实现一个脚本,通过 SFTP 将文件传输到远程服务器。我已经使用 paramiko 库在 Python 中实现了脚本。我可以从家里的计算机上直接连接,没有问题,但在工作中我需要通过代理服务器进行连接,这就是我卡住的地方。

我发现了一篇有用的帖子 Python ssh using Tor proxy,我认为它很好地解释了实现,但我无法创建 ProxyCommand,因此我被卡住了。

我的(伪)代码:

import paramiko

cmd = 'ssh proxy.server nc %h %p'

proxy = paramiko.ProxyCommand(cmd)

try:
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect('remote.server', username='ABC', password='123', sock=proxy)
    client.close()
except Exception as e:
    print(str(e))
finally:
    client.close()

代码在创建 ProxyCommand(第 3 行)时终止,原因是 FileNotFoundError 具有以下回溯:

Traceback (most recent call last):
  File "C:\Users\zzz\Documents\SFTPtest.py", line 3, in <module>
    proxy = paramiko.ProxyCommand(cmd)
  File "C:\Python33\lib\site-packages\paramiko-1.14.0-py3.3.egg\paramiko\proxy.py", line 49, in __init__
    self.process = Popen(self.cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
  File "C:\Python33\lib\subprocess.py", line 820, in __init__
    restore_signals, start_new_session)
  File "C:\Python33\lib\subprocess.py", line 1112, in _execute_child
    raise WindowsError(*e.args)
FileNotFoundError: [WinError 2] The system cannot find the file specified

谁能告诉我我可能做错了什么?实际命令是错误的还是我的配置中缺少某些内容?我在 Windows 7 上运行 Python 3.3.2。

【问题讨论】:

    标签: python proxy sftp paramiko


    【解决方案1】:

    我不是专家 - 我自己刚开始使用 paramiko。但是,当我使用 ssh 时遇到了类似的错误,并通过指定 ssh 可执行文件的完整路径来解决。就我而言,它是 Linux,所以我使用了/usr/bin/ssh。我看到你使用的是 Windows - 你能找出你的 ssh 可执行文件的路径并使用它而不是仅仅使用 ssh 吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 2015-03-19
      • 2018-03-27
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多