我有一台运行 Windows 10(或 Windows 11)的笔记本电脑。我可以ssh
使用 进入我的 Ubuntu 计算机,但我想 (a) 使用 Windows 中的 GUI 应用程序或 (b) 使用 Windows 中的整个桌面。理想情况下,我想通过 X 转发而不是 VNC 或 RDP 来执行此操作。请注意,我ssh [email protected]
不是这里使用 Wayland。
我怎样才能做到这一点?
答案1
我将从两台机器开始。我将有一台最新的(22H2)Windows 10 计算机和一台 Ubuntu 23.04 计算机。Ubuntu 计算机将运行普通的 Ubuntu 桌面。我将使用最小安装的 Ubuntu,但完整安装应该也可以。我进一步假设您的 Ubuntu 计算机已配置为运行 Xorg,而不是 Wayland。这不是默认的。
在 Windows 计算机上,从以下位置下载 VcXsrv这里,然后运行安装程序。在撰写本文时,该文件名为vcxsrv-64.1.20.14.0.installer.exe
。不过,版本可能会随时间而变化。在 VcXsrv 安装程序中,接受默认值即可。
在 Ubuntu 上,运行sudo apt update && sudo apt install openssh-server
。运行hostname -I
以查找您的 IP 地址。让我们选择一个应用程序进行远程运行。我将选择/usr/bin/gnome-text-edit
。在实际的 Ubuntu 计算机上(即不是通过 SSH),运行/usr/bin/gnome-text-edit
。文本编辑器应该会打开。关闭它。我们只需要确保它能正常工作。
让我们通过 SSH 从 Windows 尝试一下。在 Windows 中,运行ssh -X username@[Ubuntu IP address here]
。它要么给出类似 的错误(gnome-text-editor:2524): Gtk-WARNING **: 12:51:24.488: cannot open display:
。这不是我们想要的。如果它打开了文本编辑器,但在 Ubuntu 计算机上,请仔细检查您是否没有使用 Wayland。在 Windows 上,运行 XLaunch(它是一个应用程序,而不是 shell 命令)。这是由 VcXsrv 安装程序安装的。选择Multiple windows
,以及显示数字三(3
)。选择Start no client
,并检查Disable access control
,然后执行完成。
ipconfig
通过在终端中运行来查找 Windows 计算机的 IP 地址(我使用的是 Powershell)。我的 Windows IP 是192.168.1.141
。现在执行
DISPLAY='192.168.1.141:3.0' /usr/bin/gnome-text-editor
在 SSH 会话中。应用程序应在 Windows 上启动。请注意,这192.168.1.141
是您的视窗计算机,而不是您的 Ubuntu 计算机。
完成!您应该能够对任何 GUI 应用程序执行相同的操作。请注意,这适用于 Xorg,而不是 Wayland。另请注意,我选择的显示编号为 3,有点随机。避免使用已被占用的编号,因此我选择了 3,但其他未使用的数字应该可以正常工作。