Nagbibiyahe sa SSH ang mga malayong utos ng Fabric. Upang dalhin ang SSH connection na iyon sa isang SOCKS server, bigyan ang Fabric ng connector na nagsasalita ng SOCKS at nagbabalik ng byte stream ng destinasyon.

Ang Connection API na ipinakilala sa Fabric 2 ay tumatanggap ng command string bilang gateway nito. Ginagamit ng Fabric ang string na iyon bilang ProxyCommand. Kung may umiiral na OpenBSD-compatible na nc na sumusuporta sa mga opsyon nito sa proxy, ang configuration ay maaaring:

from fabric import Connection

connection = Connection(
    "app.example.net",
    user="deploy",
    gateway="nc -X 5 -x proxy.example.net:1080 %h %p",
)

Ginagamit ng halimbawang ito ang karaniwang SSH port, 22. Pinipili ng -X 5 ng connector ang SOCKS5, habang tinutukoy ng -x ang endpoint ng proxy. Ibinibigay ng mga placeholder ng host at port ang destinasyon ng SSH. Para sa pampublikong destinasyon ng SSH, ang isang endpoint na walang pagpapatunay mula sa listahan ng SOCKS5 proxy ay maaaring punan ang address ng proxy kung pinapayagan nito ang destinasyon at port na iyon. I-configure ang utos ayon sa mga opsyon ng aktwal na connector na naka-install sa makina; hindi lahat ng programang tinatawag na nc ay nagbibigay ng parehong interface.

Tumatakbo ang connector nang lokal, doon kung saan tumatakbo ang Fabric. Hindi kailangan ng application server ang katulong na iyon dahil lamang ito ang destinasyon ng SSH. Kapag naitatag na ang stream, nagsasagawa pa rin ang Fabric ng negosasyon sa SSH at pinapatunayan ang deploy account sa app.example.net. Anumang pagpapatunay na kailangan ng SOCKS server ay pag-aari ng connector at dapat suportahan nito.

Maaari ring basahin ng Fabric ang ProxyCommand mula sa configuration ng SSH. Maaaring maging maginhawa iyon kapag ang parehong ruta ay ginagamit ng ilang tool na SSH. Gumamit ng isang inilaan na depinisyon ng gateway para sa koneksyon, sa halip na pagsamahin ang gateway sa istilong utos at isang hiwalay na gateway ng jump host para sa parehong destinasyon.

Kapag ang tagapamagitan ay isang SSH server

Ang objekto ng Connection ng Fabric na ibinigay bilang gateway ay may ibang kahulugan: kumokonekta ang Fabric sa SSH gateway na iyon at humihiling ng channel patungo sa huling host. Gamitin ang anyong iyon para sa SSH jump host. Ang tagapakinig ng SOCKS ay hindi SSH server, kaya kailangan nito ang connector sa istilong utos sa itaas.

May malinaw ding hangganan ang pagpiling ito ng transport. Ini-ruta nito ang SSH connection ng Fabric. Ang isang utos na pinapatakbo sa malayong host na kalaunan ay nagda-download ng repository o package ay gumagawa ng bagong palabas na koneksyon mula sa host na iyon, ayon sa sariling configuration ng proxy ng programang iyon.

Kaugnay na mga artikulo