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

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

我将 Raspberry Pi 3 Model B+ 连接到本地网络,可以毫无问题地通过 SSH 进入。但这确实会造成一些问题,因为所有操作都是在命令行上完成的。

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

我只是好奇如何使用此功能?如果它无法在 Windows 10 中正常运行,那么我可以运行 Linux 虚拟机来连接到 Raspberry Pi。

答案1

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

Raspberry Pi(主机)配置

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

进入后,运行以下命令:

cd /etc/ssh

备份你的 sshd 配置文件:

cp sshd_config sshd_config.ORIG

现在打开原来的在文本编辑器中使用以下文件:

sudo nano sshd_config

您可以选择任何您喜欢的文本编辑器(看这里用于 nano 文本编辑器快捷方式)。这是 ssh 服务器的主配置文件。查找并取消注释以下行:

X11Forwarding yes
X11UseForwarding yes

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

sudo systemctl restart sshd

Windows(客户端)设置

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

xclock

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

sudo apt-get install x11-apps

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


关于 XDMCP、FreeNX 的说明

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

  • XDMCP:这是最容易设置的,但是极度缺乏安全感大多数权威人士只建议你在可信赖的有线局域网(如家庭网络)上运行它。这可能比它的价值更麻烦,但如果你想研究它,请参阅此 Rasp Pi 线程用于初始设置
  • FreeNX:比 XDMCP 更安全,如果您想要定期执行此操作并且可能完全从另一个网络执行此操作,那么可能值得花时间进行设置。您需要在主机上安装 FreeNX 服务器,然后使用另一个软件 -无机器- 在 Windows 客户端上。请参阅这里以获得非常详细的指南。

答案2

在 WSL shell 上,确保已导出完全合格的 DISPLAY

export DISPLAY=localhost:0.0

下列不起作用

export DISPLAY=:0.0

:0.0 依赖于 UNIX 域套接字(而不是 TCP/IP 套接字),并且不知何故 X-forwarding 无法正确连接。我遇到了同样的问题。

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

答案3

X11 认为显示图形界面的机器是 X Windows 服务器,提供要显示的信息的机器是 X Windows 客户端。这与通常的客户端/服务器关系相反。将本地机器(具有物理显示器的机器)视为图形服务器并将远程计算机作为图形客户端

相关内容