我有一个通过中间人服务器设置并工作的反向 ssh 隧道。我在此处和远程计算机上运行 Kubuntu 12.04。
我想打开远程桌面会话。到目前为止,我一直使用 Team Viewer 登录远程桌面。我希望在没有 Team Viewer 的情况下获得类似的结果。我知道 X over SSH 将实现这一点。如果我需要 vnc,那也可以。
这是我目前的问题。当我通过隧道连接到远程计算机时,出现以下错误:
$ startkde &
$ $DISPLAY is not set or cannot connect to the X server.
我使用 -Y SSH 选项并使用密钥(而不是密码)进行连接。与 SSH 相关的一切似乎都工作正常。我看到的唯一问题是 X。这是另一个例子:
$ xeyes &
$ Error: Can't open display:
和
$ echo $DISPLAY
$
(不返回任何内容)
这些答案似乎相关,但我无法足够详细地理解它们,无法针对我的情况制定解决方案:
答案1
如果您使用中间服务器来互连两个系统,则很可能至少其中一条线路相当慢。在这种情况下,VNC 可能会为您提供更好的性能,因为您可以更好地调整带宽/性能要求/质量比(这实际上对大多数设置都有效,除非您使用的是可靠的 100Mbit+ 网络)。
我个人喜欢x11vnc
,它连接到正在运行的 X 服务器并通过 VNC 协议转发输入/输出(这可以在 X 服务器运行时完成,因此您甚至可以与显示管理器进行交互)。所讨论的 X 服务器可以是常规服务器(输出到真实显示器),也可以是基于帧缓冲区的服务器,例如Xvfb
.然后,您可以使用任何 VNC 客户端连接到导出的 X 服务器。当然,您可能希望通过ssh
或stunnel
。的手册页x11vnc
非常详尽,甚至在开头有一个常用的命令行示例。
这还允许您远程连接到正在运行的会话,以帮助某人远程解决问题。作为一个重要的好处,由于仅转发输入和输出而不是 X 协议本身,因此网络断开只会中断会话,但所有程序仍保持运行,通过 SSH 的 X 则不是这种情况。
如果出于某种原因您确实想通过 SSH 为 X11 建立隧道,则必须确保DISPLAY
环境变量已正确设置ssh
。如果没有它,您将无法继续,因为应用程序将不知道要连接到哪个服务器。检查您的配置中是否X11Forwarding
设置了该指令。yes
sshd
最后但并非最不重要的一点是,您可能不想startkde4
通过 SSH 运行(或任何其他 X 会话)——网络负载可能会相当重——VNC 将再次为您提供更好的服务。