使用 x11 转发与 ssh 和 vnc?

使用 x11 转发与 ssh 和 vnc?

我正在使用带有 -X 选项的 ssh 处理远程集群,因为我需要通过 vpn 协议可视化数据和图表。有时由于互联网连接不稳定,我会丢失会话。他们告诉我我可以使用 vnc 来避免丢失当前会话,这样如果互联网连接断开,我可以重新连接并继续我之前打开的会话。

我要做的是登录远程集群“remote.cluster”并输入

 vncserver :1

然后我在系统上打开另一个终端并输入

 ssh -C -NL 5901:remote.cluster:5901 [email protected] &

然后我在系统上启动 vinagre,并使用 ssh 协议进行连接。问题是我没有 x11 转发,无法打开窗口。如果我尝试使用 vnc 协议与 vinagre 进行连接,则无法连接,因为我收到连接超时提示。

我应该怎么办?

答案1

如果我们通过 VNC 连接到远程 X-Server,那么我们的优势在于,即使远程 SSH 连接断开,图形应用程序仍将继续运行。然后我们可以重新连接以恢复图形应用程序。另请参阅:

为了加快重新连接速度,我们可以使用以下方法将远程连接与 SSH 会话结合起来:虚拟专用网络查看器隱藏者 安装tightvncviewer使用选项-via。这样我们就可以在远程服务器上运行:

vncserver:0  ## or any other display number e.g. :1

通过 SSH 隧道在查看器上建立连接:

vncviewer -via user@remote localhost:0

这样做将需要更多带宽,因为整个桌面必须从 VNC 服务器传输。因此,对于低带宽连接来说,这可能不是一个好主意,但与 X-forwarding 相比,它可能在高带宽但不稳定的连接上为您提供更好的体验。

答案2

使用的命令:

ssh -C -NL 5901:localhost:5901 [email protected] &

转发本地 5901 -> remote.cluster:5901

因此,您可以连接到 localhost::5901 来连接到在 remote.cluster 上运行的 VNC 会话(您无权直接访问)。

X11 转发与 VNC 不同。您需要使用-X,例如

ssh -X [email protected]

这样你就可以在本地机器上运行远程 GUI 应用程序了,假设您有一个本地运行的 X 服务器(Ubuntu Desktop 或 Windows 上的 Xming)

更新:

我转发的时候犯了一个错误,应该是:

ssh -C -L 5901:localhost:5901 [email protected]

然后您可以通过 vnc 连接到 localhost:5901,流量将被转发到 remote.cluster:5901。抱歉,我粗心了……

如果不需要 GUI,请考虑使用tmuxscreen以避免会话丢失。

相关内容