WSL2 子系统启用 SSH 并使用 MobaXterm 连接
在 Windows 下使用 WSL2(Windows Subsystem for Linux) 时,很多同学希望像远程 Linux 服务器一样,通过 SSH 工具(如 MobaXterm) 来登录和管理。本文将介绍如何在 WSL2 中启用 SSH 服务,并使用 MobaXterm 成功连接。
1️⃣ 安装 SSH 服务
进入 WSL2 的 Ubuntu 子系统,执行以下命令:
sudo apt update sudo apt install -y openssh-server
安装完成后,可以查看 sshd 配置文件路径:
/etc/ssh/sshd_config
2️⃣ 启动并配置 SSH
启动服务
/etc/ssh/sshd_config
常见问题
报错:
Missing privilege separation directory: /run/sshd
解决办法:sudo mkdir -p /run/sshd sudo /usr/sbin/sshd
服务状态查看
sudo service ssh status
3️⃣ root 登录配置
如果你希望 使用 root 账户直接登录,需要修改配置:
编辑 sshd_config
:
sudo nano /etc/ssh/sshd_config
修改以下内容:
PermitRootLogin yes
PasswordAuthentication yes
解释:
PermitRootLogin prohibit-password
→ 禁止 root 使用密码登录,只允许密钥。PermitRootLogin yes
→ 允许 root 使用密码或密钥登录。
修改后重启 SSH 服务:
sudo pkill sshd sudo /usr/sbin/sshd
4️⃣ 在 Windows 中查看 WSL2 IP
因为 WSL2 默认运行在虚拟网络中,所以需要确认它的 IP 地址:
ip addr show eth0
示例输出:
inet 172.24.144.1/20
这里的 172.24.144.1
就是 WSL2 的 IP 地址。
5️⃣ 使用 MobaXterm 连接 WSL2
打开 MobaXterm →
Session → SSH
填写参数:
Remote host:WSL2 的 IP 地址(如
172.24.144.1
)Port:22(默认 SSH 端口)
Username:
root
(或你的 Linux 用户名)
点击 OK 保存并连接。
输入密码,即可登录 WSL2。
6️⃣ 进阶:固定端口与免密码登录
如果希望 Windows 每次重启后固定 IP,可以在 Windows Host 和 WSL2 之间配置端口转发:
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=<WSL_IP>
这样在 MobaXterm 里直接连
127.0.0.1:2222
即可。如果希望免密码登录,可以在 Windows 生成密钥:
ssh-keygen -t rsa
然后把公钥追加到 WSL2 的:
~/.ssh/authorized_keys
✅ 总结
通过以上步骤,你就可以实现:
在 WSL2 中成功启用 SSH 服务
允许 root 密码或密钥登录
使用 MobaXterm 像远程服务器一样管理 WSL2
这让 WSL2 更加接近一台完整的 Linux 开发服务器,使用体验大大提升。