win11 安装 WSL2 Ubuntu 并支持远程 SSH 登录

目录

文章目录

  • 目录
  • 环境信息
  • WSL
  • [启用 Win11 WSL 和虚拟机平台功能](#启用 Win11 WSL 和虚拟机平台功能)
  • [在 Win11 上使用 WSL安装 Ubuntu](#在 Win11 上使用 WSL安装 Ubuntu)
  • [修改 WSL 的网络模式支持局域网访问](#修改 WSL 的网络模式支持局域网访问)
  • [配置 Ubuntu SSH](#配置 Ubuntu SSH)
  • [配置 Win11 防火墙放行 ssh 流量](#配置 Win11 防火墙放行 ssh 流量)

环境信息

  • 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 功能。
bash 复制代码
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  1. 启用虚拟机平台功能。
bash 复制代码
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运行实例信息。

bash 复制代码
PS C:\WINDOWS\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Running         2

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

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

bash 复制代码
$ 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 一样。既支持访问公网,也只是局域网访问。

bash 复制代码
$ 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
bash 复制代码
sudo apt remove openssh-server
  1. 更新操作系统
bash 复制代码
sudo apt update
  1. 重装 ssh
bash 复制代码
sudo apt install openssh-server
  1. 修改 ssh 配置
bash 复制代码
sudo vim /etc/ssh/sshd_config

...
# ssh 服务监听端口
Port 2223
# ssh 服务允许远程 root 用户登入
PermitRootLogin yes
# ssh 服务允许使用用户名密码方式登入
PasswordAuthentication yes
  1. 重启 ssh
bash 复制代码
sudo service ssh restart
  1. 查看 ssh 状态
bash 复制代码
sudo service ssh status
  1. 常驻 ssh
bash 复制代码
sudo systemctl ssh enable

配置 Win11 防火墙放行 ssh 流量

  1. 管理员身份打开 PowerShell。
  2. (NAT 模式网络下需要配置,Mirrored 模式不需要配置)添加端口代理,配置 Port DNAT,使得 Remote 可以 ssh 到 localhost:port。
bash 复制代码
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. 设置防火墙入向规则
bash 复制代码
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. 测试流量
bash 复制代码
remote $ ssh username@win11_ip -p 2223
相关推荐
大聪明-PLUS2 小时前
如何从头开始开发 Linux 驱动程序
linux·嵌入式·arm·smarc
心灵宝贝3 小时前
CentOS 7 安装 net-tools.rpm 包步骤详解(附 rpm 命令和 yum 方法)附安装包
linux·运维·centos
1024find3 小时前
Linux基线配置
linux·运维·服务器
从零开始的ops生活4 小时前
【Day 68】Zabbix-自动监控-Web检测-分布式监控
linux·网络·zabbix
yong99904 小时前
安装MariaDB服务器流程介绍在Ubuntu 22.04系统
服务器·ubuntu·mariadb
jun~5 小时前
SQLMap数据库枚举靶机(打靶记录)
linux·数据库·笔记·学习·安全·web安全
小码农<^_^>5 小时前
Linux(线程控制)
linux
bing_feilong5 小时前
树莓派4B+ubuntu20.04:不插显示器能不能正常开机?
ubuntu
HappyGame025 小时前
Linux多进程编程(下)
linux
_可乐无糖6 小时前
活到老学到老之Jenkins build triggers中的定时schedule规则细讲
linux·jenkins·pipe