Аддаленыя каманды 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. Каманда, выкананая на аддаленым хосце, якая пазней спампоўвае рэпазіторый або пакет, стварае новае знешняе злучэнне з гэтага хоста, згодна з уласнай канфігурацыяй проксі гэтай праграмы.

Падобныя артыкулы