网络上有许多手册展示了如何从 Windows 连接到 Linux 并获取 X 会话窗口,但没有表明其他情况,这是我担心的:如何使用协议 X [X 窗口服务器] 查看 linux Windows 程序?
抱歉我的英语不好……
答案1
有几种方法:
虚拟网络计算机
- 在 Windows 计算机上安装 VNC 服务器。您可以使用TightVNC例如。确保将其配置为侦听非环回 IP 地址,并且不会被防火墙阻止。
在 Linux 机器上安装 VNC 客户端。如果您使用 Debian 或 Ubuntu,您可以在终端中使用以下命令进行安装:
$ sudo apt-get install xtightvncviewer
连接到 Windows 机器(假设 Windows 机器的 IP 地址是
192.168.1.10
):$ xtightvncviewer 192.168.1.10
远程桌面协议
Allow users to connect remotely to this computer
标准的 Windows 远程桌面协议。通常,除了设置复选框System Properties
和将用户添加到Remote Desktop Users
组之外,它不需要在 Windows 端进行任何特殊配置。在 Linux 方面,您必须:
安装
rdesktop
客户端。对于 Ubuntu 或 Debian,您可以使用以下命令:$ sudo apt-get install rdesktop
连接到 Windows 机器(假设它的 IP 地址是
192.168.1.10
):$ rdesktop 192.168.1.10
X11
如果你在 Windows 机器上运行 X11 服务器(
Cygwin/X
或Xming
例如),那么通信就非常简单,因为 X 窗口系统被设计为网络透明的。我们接触的主要内容是应用程序可以执行和显示在不同的机器上。您在本地运行应用程序,但指定展示应用程序显示的位置。在你的情况下,Windows 框(例如
192.168.1.10
)运行一个应用程序和 Linux 机器(比如说192.168.1.11
)显示器应用程序。事实上,windows 机器不需要运行 X 服务器来跑步应用程序 - 它只是可以展示它在远程Linux机器上:$ DISPLAY="192.168.1.11:0" xterm
当你在 Windows 机器上运行命令时,它将跑步
xterm
本地,但是展示它在运行于单独机器上的远程 X 服务器上。当您在 Windows 机器上运行该命令时,您应该会看到在 Linux 机器上(远程)打开的终端窗口。是
DISPLAY
一个环境变量,用于保存当前显示器的地址和编号。每个 X 应用程序都会查看此变量,以了解在何处呈现自身。需要理解的重要一点是xterm
(例如)不区分它是否显示器将其自身连接到本地 X 服务器或远程 X 服务器。网络透明。例如,如果你运行xterm
并说:$ echo $DISPLAY
它将打印一个当前的
DISPLAY
所有应用程序展示本身。通过覆盖此变量,您可以告诉应用程序展示它在别的地方。我希望现在这个概念已经清楚了。请注意,您的 Linux X Server 可能会出于安全原因拒绝所有传入连接。要允许来自 Windows 计算机的连接,请运行以下命令:
$ xhost +192.168.1.10
其实这种方式是有点不安全的,因为每个给自己分配这个IP地址的人都可以连接到X服务器。
幸运的是,有一种安全且很棒的方法。由于 X 服务器只监听 TCP 端口,因此我们可以使用
ssh
具有此出色功能的加密通道将其转发到本地计算机。您需要在 Windows 计算机上运行 ssh 守护程序。您可以使用openssh
-这很简单,只需使用选择包cygwin
设置,然后打开终端并运行,但不要忘记在中设置。cygwin
openssh
ssh-host-config
X11Forwarding yes
sshd_config
现在,它看起来怎么样。在 Linux 机器上,运行:
$ ssh -X [email protected] xterm
输入密码后,你应该看到一个
xterm
窗口执行在 Windows 机器上,但是显示在 Linux 机器上。授权后,ssh
它会绑定到 Windows 机器上的端口,在该端口上侦听连接并通过已建立的通道将数据包转发到 Linux 机器上的本地端口(对于显示器 0,通常为 6000)。然后,它会运行xterm
设置DISPLAY
到绑定端口的程序,xterm
允许展示通过加密通道将自身连接到远程 X 服务器。在这种情况下,您无需运行,xhost
因为 X 服务器不需要接受任何外部连接。现在,如何跑步Linux 机器上的应用程序和展示在 Windows 上:
在 Windows 机器上,您需要一个 X 服务器(
Xming
例如)和一个 SSH 客户端(PuTTY
例如)。首先,确保Xming
正在运行(有一个托盘图标)。然后,打开PuTTY
,选择ssh
,填写login
和password
框,还要确保在设置X11 Forwarding
中SSH
选中。然后只需单击connect
,之后它将连接到 Linux 机器并打开一个终端窗口。您可以xterm
在那里运行,它将显示在本地Xming
服务器上(因为它被转发PuTTY
到远程机器)。另请查看这指南-有一些截图。
答案2
Windows 不支持 X 协议。我会寻找能够使用 Windows RDP(远程桌面协议)的东西。下面是一个示例,未经本人验证,可能是桌面。