S SH Туннелирование с Python - PullRequest
0 голосов
/ 27 мая 2020

моя цель - обновить Host3, похороненный следующим образом: [Internet] <----> [Host1: HasInternet] <----> [Host2: Locked-by-VPN] <----> [Host3 : No-Internet]

В настоящее время мне нужно запустить серию команд S SH, чтобы сначала построить обратные S SH подключения от Host1 к Host2 к Host3, а затем Dynami c Tunnels, чтобы затем обновить my Host3 следующим образом (см. снимок экрана таблицы):

enter image description here

Я хочу автоматизировать эту серию туннелей S SH с помощью python. Я изучил paramiko, библиотеки sshtunnels, и не вижу, как их использовать для моей цели.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 27 мая 2020

Вместо того, чтобы управлять туннелями вручную, позвольте ssh сделать это за вас с помощью опции ProxyJump, к которой вы можете получить доступ с помощью -J в командной строке.

ssh -J <username>@Locked-By-VPN <username>@Has-No-Internet

Это устанавливает подключение к Has-No-Internet, сначала подключившись к Locked-By-VPN.

Вы можете сократить это, добавив следующее в свой ~/.ssh/config файл:

Host Host3
   Hostname
   User <username>
   ProxyJump <username>@Locked-By-VPN

Затем вы можете просто запустить ssh Host3; ssh получит реальное имя хоста, необходимое имя пользователя и промежуточный хост из файла конфигурации.

Существует также опция ProxyCommand, которую вы можете использовать для обеспечения большего контроля над процессом подключения. См. man ssh_config для получения более подробной информации об обоих вариантах.

...