如果您已经在Windows上运行X服务器(与使用Xming一样),那么Windows端就已经完成了(但请参见下面的一些重要详细信息)。剩下的关键是告诉pi上的X11应用程序将其X11数据发送到Windows PC。
这是通过DISPLAY
环境变量完成的。通常,如果X服务器和应用程序在同一台计算机上运行,则DISPLAY只会指定服务器号(例如,:0
如果您仅运行一台X服务器),也可以指定服务器和屏幕(例如:0.0
)。由于没有IP地址,因此会告诉应用程序的X库服务器是本地服务器,并且将相应地建立连接(可能通过某种共享内存传输)。
要告诉应用将X11数据发送到远程节点,请在DISPLAY
变量中包含IP地址。例如,export DISPLAY=192.168.1.10:0
。这将告诉所有X11应用程序他们需要打开与192.168.1.10节点上X服务器#0的TCP连接。如果您将DNS主机名放在网络中,则可以在这里使用。
两个潜在的问题
正如我在第一段中所写,仅运行Xming可能还不够。可能需要其他配置。
首先是必须将X11服务器配置为通过TCP接受来自远程节点的连接。今天分发的许多X服务器(我不了解Xming)仅接受来自本地运行的应用程序的连接,除非您明确配置它们。这是一项安全功能,因为每个打开的套接字都是潜在的攻击媒介。
第二个是您的X11服务器维护着一个允许连接的主机/用户的数据库。您需要将Raspberry Pi的IP地址列入白名单。您可以通过xhost
在Windows上从Xming 运行命令来执行此操作,例如,从在xterm中运行的控制台运行命令。您也可以输入xhost +
以禁用此安全检查,但这很危险,因为它将允许世界各地的任何应用打开与显示器的连接。如果您位于信任每个人(例如您自己的家)的LAN上的防火墙后面,那是最简单的方法,但是xhost
如果不这样做,请花点时间正确配置。
选择: ssh -Y
使用上述方法,您的X11应用程序都将尝试打开与X服务器的TCP连接。这些连接不安全。LAN侦听包上的某人可以拦截它们。
为了解决此问题,-Y
与其在Raspberry pi上设置DISPLAY变量,不如在连接到它时使用该参数(例如slogin -Y hostname
)。-Y参数(如-X)将在节点之间创建一个隧道,以承载X11流量。这将使X11通信保持加密和安全。它还将分配自己的DISPLAY环境变量,以便应用程序将使用隧道。xhost
由于(就您的X服务器而言)连接是本地(从SSH隧道的始发端)发起的,因此它也可以避免混乱。