通过 SSH 反向隧道的远程桌面 (KDE)

通过 SSH 反向隧道的远程桌面 (KDE)

我有一个通过中间人服务器设置并工作的反向 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

$ 

(不返回任何内容)

这些答案似乎相关,但我无法足够详细地理解它们,无法针对我的情况制定解决方案:

我可以以 root 身份在另一个用户的桌面上启动图形程序吗?

https://superuser.com/questions/190801/linux-wmctrl-cannot-open-display-when-session-initied-via-sshscreen/190878#190878

答案1

如果您使用中间服务器来互连两个系统,则很可能至少其中一条线路相当慢。在这种情况下,VNC 可能会为您提供更好的性能,因为您可以更好地调整带宽/性能要求/质量比(这实际上对大多数设置都有效,除非您使用的是可靠的 100Mbit+ 网络)。

我个人喜欢x11vnc,它连接到正在运行的 X 服务器并通过 VNC 协议转发输入/输出(这可以在 X 服务器运行时完成,因此您甚至可以与显示管理器进行交互)。所讨论的 X 服务器可以是常规服务器(输出到真实显示器),也可以是基于帧缓冲区的服务器,例如Xvfb.然后,您可以使用任何 VNC 客户端连接到导出的 X 服务器。当然,您可能希望通过sshstunnel。的手册页x11vnc非常详尽,甚至在开头有一个常用的命令行示例。

这还允许您远程连接到正在运行的会话,以帮助某人远程解决问题。作为一个重要的好处,由于仅转发输入和输出而不是 X 协议本身,因此网络断开只会中断会话,但所有程序仍保持运行,通过 SSH 的 X 则不是这种情况

如果出于某种原因您确实想通过 SSH 为 X11 建立隧道,则必须确保DISPLAY环境变量已正确设置ssh。如果没有它,您将无法继续,因为应用程序将不知道要连接到哪个服务器。检查您的配置中是否X11Forwarding设置了该指令。yessshd

最后但并非最不重要的一点是,您可能不想startkde4通过 SSH 运行(或任何其他 X 会话)——网络负载可能会相当重——VNC 将再次为您提供更好的服务。

相关内容