无法在Python中创建ProxyCommand对象

时间:2014-06-18 16:26:05

标签: python proxy sftp paramiko

我需要实现一个脚本,通过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。

1 个答案:

答案 0 :(得分:0)

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