Віддалені команди 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. Команда, виконана на віддаленому вузлі й потім завантажує репозиторій або пакунок, створює нове вихідне з'єднання з цього вузла, згідно з власною конфігурацією проксі цієї програми.

Схожі статті