wsl转wsl2与局域网内网访问填坑

wsl1转wsl2

  1. 使用 PowerShell 以管理员身份运行

  2. 执行命令 wsl -l -v 可以看到WSL版本号是 1,需要执行升级,才能到2

  3. dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    然后重启电脑

  4. 下载 Linux 内核更新包

    x64: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
    arm64: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi

  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 (

    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

posted @ 2021-05-17 09:52  R.困兽  阅读(5788)  评论(0编辑  收藏  举报