Nic*_*ick 5 ssh netsh windows-10 windows-subsystem-for-linux
我在 WIN10 机器上的 WSL2 中运行 SSH 服务器。为了完成这项工作,我正在使用:
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=172.19.237.178 connectport=22
Run Code Online (Sandbox Code Playgroud)
这最初工作正常。172.19.237.178是 WSL2 VM 的 IP。
只有一个问题。我将 sshd 设置为在 PC 启动时运行,并且每次启动机器时 WSL2 都有不同的 IP。有没有办法将 WSL2 配置为使用静态 IP?
编辑:有关确定 WSL 机器 IP 的变通方法,请参阅此问题。
Art*_*ius 11
这个解决方案帮助我设置了我的wsl的静态IP,尝试:
在您的 Windows 主机上运行此命令:
netsh interface ip add address "vEthernet (WSL)" 192.168.99.1 255.255.255.0
Run Code Online (Sandbox Code Playgroud)
在你的 wsl linux 机器上:
sudo ip addr add 192.168.99.2/24 broadcast 192.168.99.255 dev eth0 label eth0:1;
Run Code Online (Sandbox Code Playgroud)
但要在重新启动系统后保留此 IP,您需要在启动脚本中设置这些命令。
WSL2 机器的 IP 地址不能设为静态,但可以使用wsl hostname -I
基于此,我能够创建以下 powershell 脚本,该脚本将在我的 WSL 机器上启动 sshd 并将流量路由到它。
wsl.exe sudo /etc/init.d/ssh start
$wsl_ip = (wsl hostname -I).trim()
Write-Host "WSL Machine IP: ""$wsl_ip"""
netsh interface portproxy add v4tov4 listenport=22 connectport=22 connectaddress=$wsl_ip
Run Code Online (Sandbox Code Playgroud)
我通过 visudo 将以下内容添加到我的 sudoers 文件中,以避免需要密码来启动 sshd
%sudo ALL=(ALL) NOPASSWD: /etc/init.d/ssh
Run Code Online (Sandbox Code Playgroud)
最后,从管理 powershell 终端,我安排我的脚本在启动时运行
$trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:15
Register-ScheduledJob -Trigger $trigger -FilePath C:\route_ssh_to_wsl.ps1 -Name RouteSSHtoWSL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12347 次 |
| 最近记录: |