установить pip с помощью SSH обратного туннеля через промежуточный хост

Вопрос или проблема

Я искал ответ на это, но не смог найти.

Я пытаюсь установить несколько пакетов PyPi на сервере (tachi), который не имеет доступа в интернет, и к которому можно получить доступ только через SSH-джамхост (pella), который использует двухфакторную аутентификацию (google-authenticator).

Обычно, если бы не было джамхоста на пути, я бы сделал что-то вроде этого, чтобы позволить pip загружать пакеты через мой локальный компьютер (koto):

ssh [email protected] -R tachi.example.org:8888

А затем на tachi:

pip3 --proxy socks5://localhost:8888 install --upgrade pip

Это работает отлично.

Однако, когда я добавляю джамхост (pella) в эту комбинацию, это не срабатывает. На джамхосте я включил это в sshd_config:

AllowTcpForwarding yes
AllowAgentForwarding yes
PermitTunnel yes

(это также включено на tachi)

Я пытался выполнить эти команды:

tony@koto:~$ ssh pella.example.org -R pella.example.org:8888
tony@pella:~$ ssh tachi.example.org -R 8888:tachi.example.org:8888
tony@tachi:~$ pip3 --proxy socks5://localhost:8888 install --upgrade pip

Но pip не подключается и в конечном итоге истекает по времени с сообщением:

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.contrib.socks.SOCKSHTTPSConnection object at 0x71b236020dd0>: Failed to establish a new connection: [Errno 99] Cannot assign requested address')': /simple/pip/

Я также пробовал:

tony@koto:~$ ssh [email protected] -R tachi.example.org:8888 -J [email protected]

Но pip все равно не подключается.

Если я послушаю вывод из ssh -vvvv, в нем ясно говорится, что обратные туннели создаются, и на джамхосте (pella) и на сервере (tachi) я вижу с помощью ss -anp, что туннель существует на порту 8888.

Я, вероятно, неправильно использую туннелирование, но мне не удалось найти решение или понять, как это сделать.

Есть ли среди вас SSH-гуру с какими-либо идеями?

Заранее спасибо,

/tony

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

Ответ или решение

Чтобы установить пакеты PyPi на сервере (tachi), который недоступен в интернете и доступен только через SSH-джам-хост (pella) с двухфакторной аутентификацией, необходимо правильно настроить обратные SSH-туннели. В этой статье мы рассмотрим все необходимые шаги для успешной установки пакетов с помощью pip через SSH-обратный туннель, даже когда используется джам-хост.

Шаг 1: Подготовка SSH-доступа

Перед началом убедитесь, что вы можете подключаться к вашему джам-хосту (pella) и серверу (tachi) без каких-либо ошибок. Также проверьте, что на обоих серверах в конфигурации SSH (sshd_config) включены следующие параметры:

AllowTcpForwarding yes
AllowAgentForwarding yes
PermitTunnel yes

Шаг 2: Установка обратного туннеля через джам-хост

Вам нужно открыть два SSH-туннеля. Сначала создайте SSH-сессию для обратного туннелирования на джам-хосте, а затем forwarded (перенаправленный) туннель к серверу. Выполните следующую команду из вашего локального терминала (koto):

ssh -J [email protected] tachi.example.org -R 8888:localhost:8888

Шаг 3: Повторное создание обратного туннеля на сервере tachi

На сервере tachi создайте обратный туннель, который будет перенаправлять трафик через джам-хост:

ssh [email protected] -R 8888:localhost:8888

Таким образом, локальный порт 8888 на вашем джам-хосте (pella) будет перенаправлен к порту 8888 на сервере (tachi).

Шаг 4: Проверка открытых портов

Убедитесь, что туннели были созданы правильно. Используйте следующую команду на pella и tachi, чтобы проверить, работают ли они:

ss -anp | grep 8888

Шаг 5: Установка пакетов с помощью pip

Теперь вы можете установить пакеты через pip, используя прокси-сервер на локальном порту 8888. На сервере (tachi) выполните:

pip3 --proxy socks5://localhost:8888 install --upgrade pip

Важные замечания

  1. Двухфакторная аутентификация: Убедитесь, что вы успешно прошли процедуру двухфакторной аутентификации перед выполнением команд. Это может влиять на доступ к джам-хосту.

  2. Проблемы с соединением: Если pip продолжает выдавать ошибки, проверьте, все ли настройки прокси верны и что на tachi установлен пакет socks5.

  3. Логи SSH: Используйте параметр -vvv для отладки SSH-сессии, чтобы выявить возможные ошибки при установлении соединений между узлами.

Таким образом, с помощью этих шагов вы сможете установить пакеты PyPi на сервере tachi через SSH-обратный туннель через джам-хост pella. Не забывайте следить за состоянием туннелей и обеспечивать корректное подключение.

Оцените материал
Добавить комментарий

Капча загружается...