SSH връзки на Fabric 2+ през SOCKS прокси
Използвайте шлюза ProxyCommand на Fabric с конектор, който поддържа SOCKS, като запазите SSH удостоверяването свързано с дестинацията.
Отдалечените команди на Fabric пътуват по SSH. За да прекарате тази SSH връзка през SOCKS сървър, дайте на Fabric конектор, който говори SOCKS и връща байтовия поток на дестинацията.
API Connection, въведен във Fabric 2, приема команден низ като свой gateway. Fabric използва този низ като ProxyCommand. При наличен съвместим с OpenBSD nc, който поддържа своите прокси опции, конфигурацията може да бъде:
from fabric import Connection
connection = Connection(
"app.example.net",
user="deploy",
gateway="nc -X 5 -x proxy.example.net:1080 %h %p",
)Този пример използва обичайния SSH порт, 22. -X 5 на конектора избира SOCKS5, а -x указва крайната точка на проксито. Заместителите за хост и порт подават SSH дестинацията. За публична SSH дестинация неудостоверена крайна точка от списъка със SOCKS5 проксита може да запълни адреса на проксито, ако позволява тази дестинация и порт. Настройте командата с опциите на действителния конектор, инсталиран на машината; програмите с име nc не всички предлагат един и същ интерфейс.
Конекторът работи локално, там където работи Fabric. Сървърът на приложението не се нуждае от този помощник само защото е SSH дестинация. След установяване на потока Fabric все още извършва SSH договаряне и удостоверява акаунта deploy на app.example.net. Всяко удостоверяване, изисквано от SOCKS сървъра, принадлежи на конектора и трябва да бъде поддържано от него.
Fabric може също да прочете ProxyCommand от SSH конфигурация. Това може да е удобно, когато същият маршрут се използва от няколко SSH инструмента. Използвайте една предначертана дефиниция на шлюз за връзката, вместо да комбинирате шлюз във вид на команда с отделен шлюз на междинен хост за същата дестинация.
Когато посредникът е SSH сървър
Обект Connection на Fabric, подаден като gateway, означава нещо различно: Fabric се свързва с този SSH шлюз и иска канал до крайния хост. Използвайте тази форма за междинен хост по SSH. SOCKS слушателят не е SSH сървър, затова му е нужен конекторът във вид на команда по-горе.
Този избор на транспорт също има ясна граница. Той маршрутизира SSH връзката на Fabric. Команда, изпълнена на отдалечения хост, която по-късно изтегля хранилище или пакет, създава нова изходяща връзка от този хост, според собствената прокси конфигурация на програмата.