在适用于 Linux 的 Windows 10 子系统上通过 SSH 设置 X11 转发?

Cro*_*ent 17 xorg x11-forwarding windows-10 windows-subsystem-for-linux

我有一个 Raspberry Pi 3 Model B+ 连接到我的本地网络,我可以毫无问题地通过 SSH 连接到它。尽管一切都是在命令行上完成的,但这确实会导致一些问题。

我真正想做的是通过使用 Windows Subsystem for Linux 附带的 SSH 客户端来使用 X11 转发。我正在运行安装了 1803 更新的 Windows 10 专业版。

我只是想知道如何使用此功能?如果它本身无法在 Windows 10 中运行,那么我始终可以运行 Linux 虚拟机来连接到 Raspberry Pi。

小智 18

在 WSL shell 上,确保您已导出完全限定的 DISPLAY

export DISPLAY=localhost:0.0
Run Code Online (Sandbox Code Playgroud)

以下不起作用

export DISPLAY=:0.0
Run Code Online (Sandbox Code Playgroud)

:0.0 依赖于 UNIX 域套接字(而不是 TCP/IP 套接字)并且不知何故 X 转发没有正确连接。我有同样的问题。

更新:wsl2 几乎一样,但是在使用 VcXsrv 时,您必须选中该disable access control框。


bae*_*elx 12

鉴于您当前的设置,这绝对是可能的。请注意,您还可以选择使用 Putty,但无论哪种方式,您都需要在客户端计算机上运行 X 服务器,即您的 Linux 的 Windows 子系统 — WSL。X 窗口系统的客户端-服务器模型部分是使 X 转发如此容易实现的原因。您所需要的只是在主机和客户端上运行的 X 服务器。

树莓派(主机)配置

首先,您需要对主机(您的 Raspberry Pi)上的 SSH 服务器进行细微的配置调整。首先,在etc目录中找到您的sshd_config文件。您可以通过 ssh 进入 Raspberry Pi(使用具有 sudo 功能的帐户)或直接访问 Pi 然后打开终端来运行这些命令。

进入后,运行以下命令:

cd /etc/ssh
Run Code Online (Sandbox Code Playgroud)

备份您的 sshd 配置文件:

cp sshd_config sshd_config.ORIG
Run Code Online (Sandbox Code Playgroud)

现在在文本编辑器中打开原始文件:

sudo nano sshd_config
Run Code Online (Sandbox Code Playgroud)

您可以选择您喜欢的任何文本编辑器(有关 nano 文本编辑器的快捷方式,请参见此处)。这是 ssh 服务器的主要配置文件。查找并取消注释以下行:

X11Forwarding yes
X11UseForwarding yes
Run Code Online (Sandbox Code Playgroud)

保存并退出。现在您需要使用以下命令重新启动 Pi 的 SSH 服务器:

sudo systemctl restart sshd
Run Code Online (Sandbox Code Playgroud)

Windows(客户端)设置

你已经完成了你的主机。现在您需要做的就是为 Windows 安装一个 X 服务器。有几个选项可供选择,但我会选择 Cygwin X,您可以在此处下载。安装它并运行它后,它应该会在您的客户端上生成一个小窗口,用于显示 X 程序。您现在可以通过返回到 WSL shell 并运行简单命令来测试 X 转发是否发生:

xclock
Run Code Online (Sandbox Code Playgroud)

Cygwin 生成的窗口中应该会出现一个简单的时钟。您可以通过返回 WSL shell 并按 Ctrl+C 来终止时钟。如果无法识别此命令,您可能首先需要在主机上安装 x11-graphics 应用程序:

sudo apt-get install x11-apps
Run Code Online (Sandbox Code Playgroud)

现在应该为您启用 X 转发,您现在可以从 Windows 运行大多数(如果不是全部)Raspberry Pi 的应用程序。


关于 XDMCP、FreeNX 的注意事项

您可能希望更进一步,并进行设置以从您的 Pi 运行整个桌面环境,而不仅仅是 X 转发所允许的逐个应用程序。以下是您可以使用的几个常用选项:

  • XDMCP:这是最容易设置但众所周知的不安全,大多数权威机构只建议您在受信任的有线 LAN(如您的家庭网络)上运行它。这可能比它的价值更麻烦,但如果您想了解它,请参阅此 Rasp Pi 线程以进行初始设置
  • FreeNX:比 XDMCP 更安全,如果您想定期执行此操作并且可能完全从另一个网络执行此操作,则可能值得花时间进行设置。你需要在主机上安装一个 FreeNX 服务器,然后在你的 Windows 客户端上使用另一个软件 - NoMachine。请参阅此处以获取非常详细的指南。