在WSL Ubuntu中配置远程桌面访问
WSL (Windows Subsystem for Linux) 的 Ubuntu 发行版默认仅提供命令行界面,这在进行某些图形化操作时不太方便。本文将介绍两种在 Windows 系统上远程连接到 WSL Ubuntu 并启用图形界面的方法:VNC 和 XRDP。
方法一:使用 VNC (适用于 Windows 11)
注意:此方法适用于 Windows 11。Windows 10 用户应考虑使用 XRDP 方法,因为 WSLg 在 Windows 10 上可能不支持 systemd。
1. 禁用 WSLg
在 Windows 用户目录下(例如 C:\Users\YourUsername)创建一个名为 .wslconfig 的文件,并添加以下内容:
[wsl2]
guiApplications=false
2. 安装桌面环境
首先安装任务选择工具:
sudo apt update
sudo apt install tasksel -y
然后运行 tasksel 选择并安装您偏好的桌面环境(例如 Ubuntu desktop)。使用空格键选择,Tab 键切换到"OK"确认。
3. 安装 VNC 服务器
安装 Tigervnc 服务器:
sudo apt install tigervnc-standalone-server -y
4. 设置 VNC 密码
为当前用户、root 用户和 gdm 用户设置 VNC 访问密码:
vncpasswd # 设置当前用户的密码
sudo -H vncpasswd # 设置 root 用户的密码
sudo -H -u gdm vncpasswd # 设置 gdm 用户的密码
5. 配置 Xorg
有时系统更新可能会重置 Xorg 的配置。如果 VNC 连接失败,可能需要重新应用以下配置。创建一个名为 Xorg_new 的脚本来包装 Xvnc 的启动:
sudo mv /usr/bin/Xorg /usr/bin/Xorg_old
sudo vim /usr/bin/Xorg_new
在 Xorg_new 文件中写入以下内容:
#!/bin/bash
for arg in "$@"; do
shift
case "$arg" in
vt*)
set -- "$@" "${arg//vt/tty}"
;;
-keeptty | -novtswitch)
;;
*)
set -- "$@" "$arg"
;;
esac
done
# 设置 VNC 分辨率和密码文件路径
geometry="1920x1080"
password_file="${HOME:-/root}/.vnc/passwd"
command=("/usr/bin/Xvnc" "-geometry" "$geometry" "-PasswordFile" "$password_file" "$@")
systemd-cat -t /usr/bin/Xorg echo "Starting Xvnc:" "${command[@]}"
exec "${command[@]}"
将脚本设置为可执行文件,并创建符号链接:
sudo chmod 0755 /usr/bin/Xorg_new
sudo ln -sf Xorg_new /usr/bin/Xorg
6. 启用 Systemd (如果需要)
较新版本的 WSL 默认启用 Systemd。若要手动启用,请编辑 /etc/wsl.conf:
sudo vim /etc/wsl.conf
添加以下内容:
[boot]
systemd=true
重要提示:启用 Systemd 后,建议使用 shutdown now 或 poweroff 在 WSL 内部正常关机。直接使用 wsl --shutdown 有可能损坏系统。不过,作者本人表示直接使用 wsl --shutdown 并未遇到问题。
7. 配置 VNC 自动登录
为了在连接 VNC 时自动登录,请编辑 GDM 的配置文件:
sudo vim /etc/gdm3/custom.conf
取消以下行的注释,并将 YourUsername 替换为您的 WSL 用户名:
AutomaticLoginEnable=true
AutomaticLogin=YourUsername
8. 重启 WSL
关闭并重新启动 WSL:
wsl --shutdown
9. 验证 VNC 服务
重启 WSL 后,检查 VNC 服务是否正在运行:
ps -ef | grep vnc
lsof -i:5900
预期会看到 Xvnc 进程,并且 lsof 命令会显示 Xvnc 正在监听 5900 端口。
10. 连接 VNC 客户端
下载并安装 VNC 客户端(例如 RealVNC Viewer)。连接地址填 127.0.0.1:5900,并输入之前设置的 VNC 密码。
方法二:使用 XRDP
XRDP 配置相对简单,尤其适合 Windows 10 用户。
1. 安装 XRDP
安装 XRDP 包:
sudo apt update
sudo apt-get install xrdp -y
XRDP 服务通常会自动启动并设置为开机自启。
2. 修改 XRDP 端口
由于 XRDP 默认端口 (3389) 可能与 Windows 冲突,建议修改它。编辑 XRDP 配置文件:
sudo vim /etc/xrdp/xrdp.ini
将端口号修改为其他值,例如 3399。
3. 重启 XRDP 服务
应用端口更改后,重启 XRDP 服务:
sudo systemctl restart xrdp
4. 连接 XRDP
在 Windows 远程桌面连接客户端中,输入 WSL 的 IP 地址(通常是 127.0.0.1)和修改后的端口号(例如 127.0.0.1:3399)。
注意:有时直接使用 127.0.0.1 可能无法连接,但使用 localhost 却可以。这与 XRDP 的网络配置有关。
在登录界面,选择会话类型(例如 Xorg 或 Xvnc),然后输入您的 WSL 用户名和密码。
总结与问题
两种方法都能实现远程桌面访问。然而,作者在最近的更新后发现,使用 VNC 方法运行 Gparted 等应用时可能出现闪退,连接后界面也可能不显示。XRDP 方法在选择 Xorg 会话时也可能出现类似问题,但选择 Xvnc 会话则运行正常。目前尚不清楚具体原因,但 XRDP 的 Xvnc 会话是当前可行的解决方案。