wsl转wsl2与局域⽹内⽹访问填坑
wsl1转wsl2
1. 使⽤ PowerShell 以管理员⾝份运⾏
2. 执⾏命令wsl -l -v可以看到WSL版本号是 1,需要执⾏升级,才能到2
3. /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
然后重启电脑
4. 下载 Linux 内核更新包
5. 设置分发版版本
执⾏命令:wsl --set-version <;分发版名称> <;版本号>
如:将 Ubuntu18.04 设置为WSL2的命令为wsl --set-version Ubuntu-18.04 2
这⼀步⽐较耗时,执⾏完成后通过命令wsl -l -v来查询升级是否成功
设置wsl2 xshell ssh 登录
1. sudo vim /etc/ssh/sshd_config
2. 设置参数:
Port 2222 #设置ssh的端⼝号, 由于22在windows中有别的⽤处, 尽量不修改系统的端⼝号
PermitRootLogin yes #如果需要⽤ root 直接登录系统则此处改为 yes
PasswordAuthentication yes # 密码验证登录
AllowUsers sky # 远程登录时的⽤户名
3. sudo service ssh --full-restart
4. ⽣成.ssh密钥:
⽣成密钥
sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
修改密钥权限:
sudo chmod 600 /etc/ssh/ssh_host_dsa_key
sudo chmod 600 /etc/ssh/ssh_host_rsa_key
设置wsl2内端⼝映射,局域⽹可访问wsl2内程序
1. 管理员权限运⾏powershell
2. netsh interface portproxy add v4tov4 listenport=* listenaddress=0.0.0.0 connectport=* connectaddress=* protocol=tcp
代表所有端⼝,connectaddress=为wsl内⽹地址
3. netsh interface portproxy show all 查看端⼝转发状态
4. 关闭防⽕墙或者设置⼊站转发规则
5. 删除端⼝转发:netsh interface portproxy delete v4tov4 listenport=* listenaddress=0.0.0.0
*代表所有端⼝,0.0.0.0为所有ip
wsl2 设置固定ip并且远程设置ssh登录
1. 先完成设置wsl2 xshell ssh 登录
2. 编写bat脚本,设置wsl2固定ip地址
@echo off
:: 获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32%uac%" >nul 2>nul ) else (powershell怎么以管理员身份运行
echo set uac = CreateObject("Shell.Application")>"%temp%%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%%uac%.vbs"
echo WScript.Quit >>"%temp%%uac%.vbs"
"%temp%%uac%.vbs" /f
del /f /q "%temp%%uac%.vbs" & exit )
endlocal
:: 给WSL Ubuntu和Win10添加固定ip
wsl -d Ubuntu-20.04 -u root ip addr add 192.168.50.16/24 broadcast 192.168.50.255 dev eth0 label eth0:1 netsh interface ip add address "vEthernet (WSL)" 192.168.50.88 255.255.255.0
:: 192.168.50.88 是win10地址,192.168.50.16是wls2设置的固定ip地址
netsh interface portproxy add v4tov4 listenport=2222 connectaddress=192.168.50.16 connectport=2222 wsl -d Ubuntu-20.04 -u root service ssh --full-restart
3. 设置wsl2开机restart ssh
关闭WSL的sudo密码请求
sudo visudo
<⽤户名> ALL=(ALL) NOPASSWD:ALL