Połączenia SSH Fabric 2+ przez proxy SOCKS
Użyj bramy ProxyCommand Fabric z łącznikiem obsługującym SOCKS, pozostawiając uwierzytelnianie SSH przypisane do celu.
Zdalne polecenia Fabric podróżują przez SSH. Aby przeprowadzić to połączenie SSH przez serwer SOCKS, daj Fabricowi łącznik, który mówi po SOCKS i zwraca strumień bajtów celu.
Interfejs Connection wprowadzony w Fabric 2 przyjmuje ciąg polecenia jako swój gateway. Fabric używa tego ciągu jako ProxyCommand. Jeśli dostępny jest zgodny z OpenBSD nc, który obsługuje swoje opcje proxy, konfiguracja może wyglądać tak:
from fabric import Connection
connection = Connection(
"app.example.net",
user="deploy",
gateway="nc -X 5 -x proxy.example.net:1080 %h %p",
)Ten przykład używa standardowego portu SSH, 22. -X 5 łącznika wybiera SOCKS5, a -x wskazuje punkt końcowy proxy. Symbole zastępcze hosta i portu dostarczają cel SSH. Dla publicznego celu SSH nieuwierzytelniony punkt końcowy z listy proxy SOCKS5 może wypełnić adres proxy, jeśli zezwala na ten cel i port. Skonfiguruj polecenie zgodnie z opcjami rzeczywistego łącznika zainstalowanego na maszynie; programy o nazwie nc nie wszystkie oferują ten sam interfejs.
Łącznik działa lokalnie, tam gdzie działa Fabric. Serwer aplikacji nie potrzebuje tego pomocnika tylko dlatego, że jest celem SSH. Po ustanowieniu strumienia Fabric nadal prowadzi negocjację SSH i uwierzytelnia konto deploy na app.example.net. Każde uwierzytelnianie wymagane przez serwer SOCKS należy do łącznika i musi być przez niego obsługiwane.
Fabric może też odczytać ProxyCommand z konfiguracji SSH. Może to być wygodne, gdy ta sama trasa jest używana przez kilka narzędzi SSH. Użyj jednej zamierzonej definicji bramy dla połączenia, zamiast łączyć bramę w stylu polecenia z osobną bramą hosta przeskoku dla tego samego celu.
Gdy pośrednikiem jest serwer SSH
Obiekt Connection Fabric przekazany jako gateway oznacza coś innego: Fabric łączy się z tą bramą SSH i żąda kanału do końcowego hosta. Użyj tej formy dla hosta przeskoku SSH. Odbiornik SOCKS nie jest serwerem SSH, więc potrzebuje powyższego łącznika w stylu polecenia.
Ten wybór transportu ma też wyraźną granicę. Kieruje połączenie SSH Fabric. Polecenie wykonane na zdalnym hoście, które później pobiera repozytorium lub pakiet, tworzy nowe połączenie wychodzące z tego hosta, zgodnie z własną konfiguracją proxy tego programu.