paramiko: переадресация порта SSH для получения дампа SQL - PullRequest
4 голосов
/ 02 мая 2011

Я пытаюсь использовать скрипт Python для получения дампа SQL с удаленного хоста, с промежуточным хостом в качестве прокси, например:

local machine -> proxy -> remote

Прокси должен быть там, потому что удаленный хостразрешает подключения только через этот прокси.

Примечание: Мне известен аналогичный вопрос на Как подключиться к базе данных через туннель Paramiko (или аналогичный пакет) но, похоже, решение относится только к PostgreSQL.

Я устанавливаю соединение, используя SSH через paramiko.Я знаю, что 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: есть ли у кого-нибудь пример использования forward.py paramiko для подключения к удаленному хосту через прокси-сервер?

Q2: возможно ли после программного подключения выполнять команды оболочкиудаленный хост?

1 Ответ

2 голосов
/ 28 ноября 2011

Я недавно написал 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()
...