#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