SYSTEMD-SSH-PROXY(1) systemd-ssh-proxy SYSTEMD-SSH-PROXY(1)

systemd-ssh-proxy - پروکسی اتصال SSH به ماشین‌های مجازی و کانتینرهای محلی

Host unix/* unix%* vsock/* vsock%* vsock-mux/* vsock-mux%*
    ProxyCommand /usr/lib/systemd/systemd-ssh-proxy %h %p
    ProxyUseFdpass yes

/usr/lib/systemd/systemd-ssh-proxy [ADDRESS] [PORT]

systemd-ssh-proxy یک افزونه «پروکسی» کوچک برای ابزار ssh(1) است که امکان اتصال به سوکت‌های AF_UNIX و AF_VSOCK را فراهم می‌کند. این ابزار رابط تعریف‌شده توسط گزینه پیکربندی ProxyCommand در ssh را پیاده‌سازی می‌کند. این ابزار قرار است با یک قطعه‌پیکربندی در ssh_config(5) مانند زیر استفاده شود:

Host unix/* unix%* vsock/* vsock%* vsock-mux/* vsock-mux%*
    ProxyCommand /usr/lib/systemd/systemd-ssh-proxy %h %p
    ProxyUseFdpass yes
    CheckHostIP no
Host .host
    ProxyCommand /usr/lib/systemd/systemd-ssh-proxy unix/run/ssh-unix-local/socket %p
    ProxyUseFdpass yes
    CheckHostIP no

یک قطعه‌پیکربندی مشابه این موارد به‌طور پیش‌فرض در /etc/ssh/ssh_config.d/20-systemd-ssh-proxy.conf نصب می‌شود.

با اعمال این تنظیمات، اتصالات SSH به رشته میزبان "unix/" که پس از آن یک مسیر مطلق فایل‌سیستم AF_UNIX به یک سوکت آمده باشد، به سوکت مشخص‌شده هدایت خواهند شد؛ این سوکت باید از نوع SOCK_STREAM باشد. به‌طور مشابه، اتصالات SSH به "vsock/" که پس از آن یک CID مربوط به AF_VSOCK آمده باشد، منجر به برقراری اتصال SSH به آن CID خواهد شد. "vsock-mux/" به همراه یک مسیر مطلق فایل‌سیستم AF_UNIX به یک سوکت نیز مشابه است اما برای cloud-hypervisor/firecracker کاربرد دارد که اجازه ارتباط مستقیم AF_VSOCK بین میزبان و مهمان‌ها را نمی‌دهند و مالتی‌پلکسر اختصاصی خود را روی سوکت‌های AF_UNIX فراهم می‌کنند. نگاه کنید به پشتیبانی VSOCK در cloud-hypervisor[1] و استفاده از دستگاه Virtio-vsock در Firecracker[2]. توجه داشته باشید که می‌توان از "%" به‌عنوان جداکننده به‌جای "/" استفاده کرد تا با ابزارهایی مانند "scp" و "rsync" سازگار باشد.

علاوه بر این، اتصال به ".host" بدون درگیر کردن شبکه، از طریق SSH به میزبان محلی متصل می‌شود.

این ابزار قرار است همراه با systemd-ssh-generator(8) استفاده شود که هنگام اجرا در داخل یک ماشین مجازی (VM) یا کانتینر، SSH را به نشانی‌های مناسب متصل (bind) می‌کند. systemd-ssh-generator باید در کانتینر یا مهمان VM اجرا شود و systemd-ssh-proxy روی میزبان اجرا می‌شود تا به کانتینر یا مهمان VM متصل شود.

در صورت موفقیت، 0 برگردانده می‌شود؛ در غیر این صورت یک کد خطای غیر صفر برگردانده خواهد شد.

مثال 1. ارتباط با یک ماشین مجازی محلی با CID 4711

ssh vsock/4711

مثال 2. ارتباط با یک ماشین مجازی مهمان میزبانی‌شده با cloud-hypervisor/firecracker

ssh vsock-mux/run/vm-1234.sock

مثال 3. ارتباط با میزبان محلی از طریق ssh

ssh .host

یا معادل آن:

ssh unix/run/ssh-unix-local/socket

مثال 4. کپی کردن فایل محلی 'foo' به یک ماشین مجازی محلی با CID 1348

scp foo vsock%1348:

systemd(1), systemd-ssh-generator(8), vsock(7), unix(7), ssh(1), sshd(8)

1.
پشتیبانی VSOCK در cloud-hypervisor (cloud-hypervisor VSOCK support)
2.
استفاده از دستگاه Virtio-vsock در Firecracker (Using the Firecracker Virtio-vsock Device)
systemd 261.2