如何为 VNC 设置加密的 SSH 隧道?

如何为 VNC 设置加密的 SSH 隧道?

事情是这样的:

由于一些加密问题,我的 Windows 客户端上的 TightVNC 客户端无法与我的 Vino VNC 服务器交互,如下所示:Gnome 3.10 共享桌面---如何配置VNC的安全类型?。因此,我想创建一个 SSH 隧道。但我不知道该怎么做。你能指导我吗?

以下是我希望设置的方式:

我的桌面运行 Ubuntu GNOME,带有默认的 Vino VNC 服务器,可以通过 VNC 远程访问,但加密(默认启用)已关闭。但是,在我的 Windows 笔记本电脑上,我希望能够使用 VNC 客户端 TightVNC 访问 VNC 服务器,它们之间的所有连接都通过加密的 SSH 隧道进行。

答案1

如果您的 VNC 服务器的 IP 地址是 1.2.3.4(并且在标准端口上运行),您可以执行:

ssh -L 5959:127.0.0.1:5900 [email protected]

这将从本地机器的 5959 端口建立一个加密隧道,该隧道神奇地连接到 1.2.3.4 的 5900 端口

然后你就可以通过 VNC 连接到 localhost::5959

以上假设您也在本地计算机上运行 VNC,因此端口 5900 已被占用;5959 只是另一个端口。如果端口 5900 可用,您可以将 ssh 行中的 5959 更改为 5900,然后将 VNC 连接到 localhost (127.0.0.1),而无需指定端口。

请注意,您的 VNC 服务器必须配置为接受环回连接;有些服务器默认拒绝它们,以防止某人通过 VNC 连接到他们自己并启动无限的级联窗口流。

答案2

在连接 VNC 之前,我使用 Putty 客户端(https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 从我的 Windows 笔记本电脑创建到远程 Linux 服务器的 SSH 连接,并使用它设置隧道。

当 VNC 运行时,我让这个 ssh 会话保持运行,以便隧道保持畅通。

在打开 Putty 连接之前,当您对其进行配置时,您会在 Putty 客户端配置选项左侧的类别列表下找到一个名为“连接”的菜单项,其中有一个名为“ssh”的子菜单项,在此子菜单项下,还有一个名为“隧道”的子菜单项。

在此选项页面上,将本地(源)端口配置为 127.0.0.1:5021,将远程端口配置为服务器的主机名或 IP 地址,以及 Linux 主机上的 vncserver 正在监听的远程端口。使用方便的昵称保存 Putty 会话。打开会话并登录 Linux 服务器。这将创建隧道。

现在打开您的 VNC Windows 应用程序并要求它连接到 127.0.0.1:5021 - 它将使用您设置的隧道。请注意,您正在连接到本地计算机上的 VNC 端口,该端口似乎位于您的远程计算机上,还请注意,在远程计算机上,您的防火墙规则可能需要修改以允许 VNC 服务器公布的端口上的本地流量,但无需确保您的网卡接口允许该端口上的流量,因为它是通过端口 22(您的 ssh 连接)进行隧道传输的。谢谢,杰瑞

相关内容