Как запустить fabric-скрипт через SOCKS-прокси?

#python #proxy #fabric #socks

#python #прокси #fabric #Носки

Вопрос:

У меня настроен прокси-сервер SOCKS для сервера gateway, который создается путем настройки определения хоста в моем ssh_config для использования DynamicForward localhost:9876 . Для подключения по SSH к удаленному серверу я настроил другое определение хоста для использования ProxyCommand /usr/bin/nc -x localhost:9876 %h %p , и все работает нормально.

Однако моему скрипту fabric необходимо подключиться к этому удаленному серверу. Как я могу указать ему использовать прокси-сервер SOCKS при подключении?

Ответ №1:

Теперь (март 2013) туннелирование поддерживается Fabric изначально: смотрите Обсуждение изменений в коде и сообщение о фиксации с небольшим обоснованием.

Ответ №2:

SSH-уровень Fabric на данный момент не поддерживает шлюзы или прокси-серверы, но они «могут в конечном итоге исправлять / разветвлять его когда-нибудь, чтобы добавить эту функциональность». (отсюда).

В Fabric также существует нерешенная проблема с реализацией туннелирования.

В этом сообщении в блоге предлагается переопределить функцию run.

Ответ №3:

Вы можете использовать tsocks и встроенную поддержку клиента OpenSSH для создания туннелей SOCKS. Требуется небольшая настройка, но работает нормально. Ниже показано, как я начал работу с Ubuntu 10.04.

 # Install the tsocks library and shell script.
sudo apt-get install tsocks

# Configure the range of IP addresses you need access to.
sudo nano /etc/tsocks.conf

# Use the OpenSSH client to create a socks proxy (stepping
# stones are hosts used to gain access to private subnets).
ssh -D 1080 stepping.stone

# Now connect to any given address in your configured range.
# tsocks will intercept the connection and route it using
# the SOCKS proxy we created with the previous command.
tsocks ssh 1.2.3.4
  

Тот факт, что Fabric не работает без VPN-соединения, стал для меня препятствием, так что это отличное решение; все, что для этого требуется, — это SSH-доступ к одному хосту.

Ответ №4:

на Fabric (1.12.0) (doc):

  env.use_ssh_config = True