Proxy paramiko:SSH端口转发以获取SQL转储

Proxy paramiko:SSH端口转发以获取SQL转储,proxy,paramiko,tunneling,Proxy,Paramiko,Tunneling,我尝试使用python脚本从远程主机获取SQL转储,中间主机作为代理,如下所示: local machine -> proxy -> remote 代理需要存在,因为远程主机只允许通过该代理进行连接 注意:我在上一次会议上注意到一个类似的问题,但解决方案似乎是针对PostgreSQL的 我通过paramiko使用SSH进行连接。我知道forward.py是端口转发的paramiko示例,但我不确定是否正确使用了它。这就是我所做的(PX=proxy,RMT=remote): 我得到了

我尝试使用python脚本从远程主机获取SQL转储,中间主机作为代理,如下所示:

local machine -> proxy -> remote
代理需要存在,因为远程主机只允许通过该代理进行连接

注意:我在上一次会议上注意到一个类似的问题,但解决方案似乎是针对PostgreSQL的

我通过paramiko使用SSH进行连接。我知道forward.py是端口转发的paramiko示例,但我不确定是否正确使用了它。这就是我所做的(PX=proxy,RMT=remote):

我得到了这个结果:

*** 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 ...
然后脚本卡在最后一行

问题1:有人举过如何使用paramiko的forward.py通过代理连接到远程主机的例子吗


问题2:建立连接后,是否可以在远程主机上以编程方式执行shell命令?

我最近编写了一个
SSHForwarder
类,它可以满足您的要求:

要使用它,您可以执行以下操作:

    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()
    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()