คำสั่งระยะไกลของ Fabric เดินทางผ่าน SSH หากต้องการพาการเชื่อมต่อ SSH นั้นผ่านเซิร์ฟเวอร์ SOCKS ให้มอบตัวเชื่อมที่พูด SOCKS และส่งคืนสตรีมไบต์ของปลายทางให้ Fabric

API Connection ที่เปิดตัวใน Fabric 2 รับสตริงคำสั่งเป็น gateway ของตน Fabric ใช้สตริงนั้นเป็น ProxyCommand หากมี nc ที่เข้ากันได้กับ OpenBSD ซึ่งรองรับตัวเลือกพร็อกซีของมัน การกำหนดค่าอาจเป็นดังนี้

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 คำสั่งที่ทำงานบนโฮสต์ระยะไกลซึ่งดาวน์โหลดที่เก็บหรือแพ็กเกจในภายหลังจะสร้างการเชื่อมต่อขาออกใหม่จากโฮสต์นั้น ตามการกำหนดค่าพร็อกซีของโปรแกรมนั้นเอง

บทความที่เกี่ยวข้อง