اگر از یکی از توزیعهای لینوکس به صورت WSL (Windows Subsystem for Linux) در ویندوز استفاده میکنید، شاید لازم داشته باشید تا از دستگاه دیگری در شبکه محلی به آن ssh بزنید.
اگر شبکهی WSL به صورت NAT تنظیم شده باشد، IP لینوکس همان IP شماست؛ اما لینوکس IP خود را چیزی شبیه به 172.xxx.xxx.xxx/20 معرفی میکند.
پس چگونه باید به آن ssh بزنیم؟
پورت فورواردینگ در ویندوزِ میزبان
اتصال ssh به صورت پیشفرض روی پورت 22 انجام میشود (میتوان از پرونده /etc/ssh/sshd_config آن را تغییر داد)؛ برای اتصال از دستگاههای دیگر در شبکه، باید یکی از پورتهای دستگاه میزبان (ویندوز خودمان) را به پورت 22 لینوکسمان فوروارد کنیم.
یک ترمینال Powershell با دسترسی Run As Administrator اجرا کرده و از دستور زیر استفاده کنید (نشانی IP را تغییر دهید) تا پورت 2222 ویندوز (یا هر پورت دیگری) به پورت 22 لینوکس فوروارد شود:
1 2 3 4 |
# Forward all IPv4 traffic on port 2222 to WSLs port 22 netsh interface portproxy add v4tov4 ` listenaddress=0.0.0.0 listenport=2222 ` connectaddress=172.xxx.xxx.xxx connectport=22 |
اجازه دادن به پورت در فایروال ویندوز
حالا با استفاده از همان ترمینال Powershell، دستور زیر را وارد کنید تا پورت 2222 برای استفاده TCP آزاد شود:
1 2 3 4 5 6 |
New-NetFirewallRule ` -DisplayName "WSL2 SSH (2222)" ` -Direction Inbound ` -Action Allow ` -Protocol TCP ` -LocalPort 2222 |
اتصال
حالا میتوان با اضافه کردن مقدار پورت به دستورات ssh و scp، به لینوکس روی wsl متصل شد:
1 2 3 4 |
# SSH (-p) ssh -p 2222 linuxUser@192.168.1.xxx # SCP (-P) scp -P 2222 .\Desktop\test.txt linuxUser@192.168.1.xxx:~ |