5

次のように、pythonスクリプトを使用して、中間ホストをプロキシとしてリモートホストからSQLダンプを取得しようとしています。

local machine -> proxy -> remote

リモートホストはそのプロキシを介した接続のみを許可するため、プロキシが存在する必要があります。

注: Paramiko トンネル (または同様のパッケージ) を介してデータベースに接続する方法で同様の質問があることは認識していますが、解決策は 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: 接続が確立された後、プログラムでリモート ホスト上でシェル コマンドを実行できますか?

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 に答える