paramiko: переадресация порта SSH для получения дампа SQL

Я пытаюсь использовать скрипт 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 ...

Затем скрипт застревает на последней строке.

В1: Есть ли у кого-нибудь пример использования forward.py для подключения к удаленному хосту через прокси-сервер paramiko?

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

1 ответ

Я недавно написал 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()
Другие вопросы по тегам