我需要实现一个脚本,通过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。
答案 0 :(得分:0)
我不是专家 - 我自己开始使用paramiko。但是当我使用ssh时,我遇到了类似的错误,并且通过指定ssh可执行文件的完整路径来解决它。就我而言,它是Linux,所以我使用了/usr/bin/ssh
。我看到你正在使用Windows - 你能找出你的ssh可执行文件的路径并使用它而不仅仅是ssh吗?