اتصالهای SSH در Fabric 2+ از طریق پروکسی SOCKS
دروازه ProxyCommand در Fabric را با یک اتصالدهنده سازگار با SOCKS به کار ببرید و احراز هویت SSH را به مقصد متصل نگه دارید.
دستورهای راه دور Fabric از طریق SSH سفر میکنند. برای عبور دادن آن اتصال SSH از یک سرور SOCKS، به Fabric اتصالدهندهای بدهید که SOCKS صحبت میکند و جریان بایتی مقصد را برمیگرداند.
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 را مسیریابی میکند. دستوری که روی میزبان راه دور اجرا میشود و بعداً یک مخزن یا بسته را بارگیری میکند، از همان میزبان اتصال خروجی تازهای میسازد، بر اساس پیکربندی پروکسی خودِ آن برنامه.