По сути, мне нужно получить доступ к компьютеру, скажем, машине A, доступ к которой возможен только через внутреннюю сеть моей компании. Раньше я мог настроить перенаправление портов tcprelay для этого, но этот конвейер был отключен из-за некоторых потенциальных недостатков безопасности.Как сделать SSH для обработки через средний хост с помощью Paramiko?
Скажем, моя компания общая сеть на [email protected] и конкретной машине я хочу работать с находится в [email protected]
Оба счета имеют пароль «пароль»
с помощью команд терминала и оболочки, я могу просто сесть там, используя одну единственную команду: https://askubuntu.com/a/311457
или ступенчато, было бы:
[on my account] ssh [email protected]
[on my account] enter password
[on company network] ssh machine @10.0.0.3
[on company network] enter password again
И я бы вошел в систему, с которой мне нужно общаться.
Однако, после взлома весь день, я не мог заставить это работать с Парамико. Я попытался настроить соединение, а затем выдал client.exec_command(), но просто не могу получить дескриптор для конкретной машины. Остальные мои сценарии полагаются на наличие клиента paramiko, который может получать команды и возвращать ответы, поэтому для меня было бы очень тяжелым накладным для распространения всех изменений, если бы я переключился на ткань или подпроцесс.
Ближайший я получил был:
ssh.connect(’10.0.0.1', username=‘company', password=‘password’)
chan = ssh.get_transport().open_session()
chan.get_pty()
chan.exec_command(‘ssh [email protected]’)
print chan.recv(1024)
, который вернул «ввести пароль» незамедлительное, но работает chan.send(‘password’)
только заканчивается зависанием.
Я вытягиваю свои волосы в этот момент, и я просто просматриваю документацию, надеясь найти, какую концепцию мне не хватает.
Если кто-нибудь может дать некоторые советы, я бы очень признателен.
Спасибо!
Возможный дубликат: http://stackoverflow.com/questions/1911690/nested-ssh-session-with-paramiko – sberry