Получить результат команды из SSH / Telnet через другой сервер SSH jump в Python - PullRequest
0 голосов
/ 17 декабря 2018

Я пишу код Python для удаленных хостов SSH или Telnet, выполняю некоторые команды и получаю вывод результатов.Здесь у нас есть сервер Jump, поэтому код должен быть «связан» с этим сервером и с него, Telnet или SSH, с удаленными хостами.

Все мои подходы работают нормально на сервере Jump, например, я могу получитьвывод команд внутри него.Проблема в том, когда я пытаюсь удаленно подключиться к хостам с него.

import paramiko

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('IP', 22, username="user", password="pass")
stdin, stdout, stderr = client.exec_command("command")
for line in stdout:
     print('... ' + line.strip('\n'))
client.close()

Использование библиотеки jumpssh дает те же результаты, и я не могу подключиться к хостам Telnet.Я попробовал следующий подход, но получил ошибку

Административно запрещено.

from jumpssh import SSHSession

gateway_session = SSHSession('jumpserver','user', password='pass').open()
remote_session = gateway_session.get_remote_session('IP',password='pass')
print(gateway_session.get_cmd_output('command'))

В последней компании, где я работал, у нас была лицензия от клиента SSH, который поддерживаетСценарии Python и отлично работали в более «текстовой» обработке.

Есть ли способ выполнить ту же задачу изначально в Python?

1 Ответ

0 голосов
/ 17 декабря 2018

SSHSession пытается открыть direct-tcpip канал переадресации портов через gateway_session.

"административно запрещено" - это сообщение сервера OpenSSH sshd, указывающее, что direct-tcpipпереадресация портов отключена.

Чтобы включить переадресацию портов, соответственно установите sshd_config *1011* и 10101 * и DisableForwarding 1017 *.


Если вы не можете включить переадресацию портов на сервере, вы не можете использовать библиотеку jumpssh.

Если у вас есть доступ к серверу в оболочке, вы можете использовать ProxyCommand -подобный подходвместо этого.
См. Paramiko: вкладывать ssh-сеанс на другой компьютер, сохраняя функциональность Paramiko (ProxyCommand) .

...