5

我正在尝试使用 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=proxy,RMT=remote):

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命令?

4

1 回答 1

3

我最近写了一个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()
于 2011-11-28T07:58:25.060 回答