我正在尝试使用python脚本从远程主机获取SQL转储,中间主机作为代理,如下所示:
local machine -> proxy -> remote
代理需要在那里,因为远程主机只允许通过该代理连接。
注意:我在How to connect to a database through a Paramiko Tunnel (or similar package)知道一个类似的问题,但解决方案似乎是针对PostgreSQL的。
我通过paramiko使用SSH建立连接。我知道forward.py是端口转发的paramiko示例,但我不确定我是否正确使用它。这就是我所做的(PX =代理,RMT =远程):
forward.py --password --host=PX --port=PXport --user=PXusr RMT:RMTport
我得到了这个结果:
*** Unable to open host keys file
*** Warning: no host key for PX
Connecting to ssh host PX:PXport ...
Now forwarding port 4000 to RMT:RMTport ...
然后脚本卡在最后一行。
Q1:有没有人举例说明如何使用paramiko的forward.py通过代理连接到远程主机?
Q2:建立连接后,是否可以在远程主机上以编程方式执行shell命令?
答案 0 :(得分:2)
我最近写了一个SSHForwarder
课程来做你想做的事情:
https://gist.github.com/1399529
要使用它,你可以这样做:
try:
proxy_host = 'PX'
proxy_user = 'PXusr'
target_port = RMTport
target_host = 'RMT'
f = SSHForwarder(proxy_host, target_port, target_host, proxy_user)
# .... DO SOME STUFF ....
finally:
if f:
f.close()