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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM