目录

环境信息

  • Win11
  • WSL2
  • Ubuntu 22.04 LTS

WSL

WSL 是一个与 Microsoft Windows 操作系统紧密集成的容器化环境,使得用户可以以非常轻量级的方式在 Windows 操作系统上运行 Linux 操作系统,而不再需要双系统或 VMware/Hyper-V 虚拟机。

启用 Win11 WSL 和虚拟机平台功能

  1. 管理员身份打开 PowerShell。
  2. (按需,Win11 默认已安装)安装 WSL:https://learn.microsoft.com/en-us/windows/wsl/install
  3. 启用 WSL 功能。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  1. 启用虚拟机平台功能。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 重启电脑。

在 Win11 上使用 WSL安装 Ubuntu

  1. 打开 Microsoft Store 搜索 Ubuntu。
    在这里插入图片描述

  2. 选择最新的 Ubuntu LTS 版本点击安装。

  3. 安装完成后,从开始菜单启动 Ubuntu。可能的,会自动提示并需要下载和更新 WSL版本。然后会自动进行完成 Ubuntu 初始化设置,输出 Username 和 Password。

  4. 从开始菜单启动 WSLsetting,打开设置页面可以修改虚拟机的 CPU、内存、网络、磁盘等配置。
    在这里插入图片描述

  5. 管理员身份打开 PowerShell。

  6. Ubuntu 启动后,查看 WSL运行实例信息。

PS C:\WINDOWS\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 2

修改 WSL 的网络模式支持局域网访问

默认情况下,WSL 的网络模式是 NAT。此时 Ubuntu 操作系统 IP 地址默认为 172 段。通过 WLS NAT 网络模式访问互联网。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  valid_lft forever preferred_lft forever
  inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
  valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
  2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:70:5d:e8 brd ff:ff:ff:ff:ff:ff
    inet 172.30.36.188/20 brd 172.30.47.255 scope global eth0
    valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe70:5de8/64 scope link
    valid_lft forever preferred_lft forever

但在局域网 SSH 的场景中,WSL 提供了更方便的 Mirrored 模式。
在这里插入图片描述

此时 Ubuntu 的 IP 地址和 Host IP 一样。既支持访问公网,也只是局域网访问。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  valid_lft forever preferred_lft forever
  inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
  valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
  2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 74:5d:22:c7:ab:04 brd ff:ff:ff:ff:ff:ff
    3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
      link/ether 00:50:56:c0:00:01 brd ff:ff:ff:ff:ff:ff
      4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
        link/ether 00:50:56:c0:00:08 brd ff:ff:ff:ff:ff:ff
        5: loopback0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
          link/ether 00:15:5d:2f:cc:52 brd ff:ff:ff:ff:ff:ff
          6: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
            link/ether 14:ac:60:b4:cb:73 brd ff:ff:ff:ff:ff:ff
            inet 192.168.1.7/24 brd 192.168.1.255 scope global noprefixroute eth3
            valid_lft forever preferred_lft forever
            inet6 2408:8207:1862:7f50:7fcc:d06d:e1e8:45e1/64 scope global nodad deprecated noprefixroute
            valid_lft forever preferred_lft 0sec
            inet6 2408:8207:1862:7f50:c53e:b25c:8176:ffd0/128 scope global nodad noprefixroute
            valid_lft forever preferred_lft forever
            inet6 fe80::7af4:f1eb:99e9:a7f/64 scope link nodad noprefixroute
            valid_lft forever preferred_lft forever

配置 Ubuntu SSH

  1. 卸载初始 ssh
sudo apt remove openssh-server
  1. 更新操作系统
sudo apt update
  1. 重装 ssh
sudo apt install openssh-server
  1. 修改 ssh 配置
sudo vim /etc/ssh/sshd_config
...
# ssh 服务监听端口
Port 2223
# ssh 服务允许远程 root 用户登入
PermitRootLogin yes
# ssh 服务允许使用用户名密码方式登入
PasswordAuthentication yes
  1. 重启 ssh
sudo service ssh restart
  1. 查看 ssh 状态
sudo service ssh status
  1. 常驻 ssh
sudo systemctl ssh enable

配置 Win11 防火墙放行 ssh 流量

  1. 管理员身份打开 PowerShell。
  2. (NAT 模式网络下需要配置,Mirrored 模式不需要配置)添加端口代理,配置 Port DNAT,使得 Remote 可以 ssh 到 localhost:port。
PS C:\WINDOWS\system32> netsh interface portproxy add v4tov4 listenport=2223 listenaddress=0.0.0.0 connectport=2223 connectaddress=<WSL2_IP_Address>
  # ubuntu ip
  PS C:\WINDOWS\system32> netsh interface portproxy show v4tov4
  Listen on ipv4: Connect to ipv4:
  Address Port Address Port
  --------------- ---------- --------------- ----------
  0.0.0.0 2223 localhost 2223
  # netsh interface portproxy delete v4tov4 listenport=2223 listenaddress=0.0.0.0
  1. 设置防火墙入向规则
PS C:\WINDOWS\system32> netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2223
PS C:\WINDOWS\system32> netsh advfirewall firewall show rule WSL2
Rule Name: WSL2
----------------------------------------------------------------------
Enabled: Yes
Direction: In
Profiles: Domain,Private,Public
Grouping:
LocalIP: Any
RemoteIP: Any
Protocol: TCP
LocalPort: 2223
RemotePort: Any
Edge traversal: No
Action: Allow
Ok.
# netsh advfirewall firewall delete rule WSL2
  1. 测试流量
remote $ ssh username@win11_ip -p 2223
posted on 2025-10-09 20:54  lxjshuju  阅读(150)  评论(0)    收藏  举报