xkc*_*kcd 15 ssh tunneling vnc
我有一种情况,我想连接到一台运行 VNC(我们称之为 VNCServer)的 Linux 机器,它在两台连续的 Linux 机器后面,即,要通过 ssh 连接到 VNCServer,我必须从我的笔记本电脑通过 ssh 连接到 Gateway1,然后从 Gateway1 shell我通过 ssh 进入 Gateway2,然后从那个 shell 进入 VNCServer。我无法更改网络设计和访问流程 Laptop-->Gateway1-->Gateway2-->Server。我在 Gateway1 上没有 root 权限,除 22 和 5901 外的所有端口都已关闭。
有没有办法在我的笔记本电脑上启动 VNC 查看器并访问 VNCServer?我知道这可能是使用 ssh 隧道功能完成的,而且我的 Windows 笔记本电脑上有腻子(抱歉,工作笔记本电脑上不能安装 Linux 或 Cygwin 等)。任何帮助将不胜感激,因为这将使我的生活更轻松!
Pet*_*ace 21
Putty 确实支持 ssh 隧道,如果您展开连接、SSH 树,您将看到隧道条目。
本地隧道会在您的 Windows 机器上生成一个 localhost 端口,该端口可以远程访问您指定的 IP 地址和端口。例如,当我尝试RDP到我家的桌面时,我通常会随机选择一个本地端口,例如7789,然后将桌面的本地IP地址(1.2.3.4:3389)作为远程主持人。请务必单击“添加”,然后单击“应用”。此时,当您 rdp 到 127.0.0.1:7789 时,您将通过 putty 会话连接到 1.2.3.4:3389。
这就是乐趣所在。如果然后在中间盒上设置一个端口隧道,在 putty 中设置你指定为远程端口的本地端口,然后你就可以通过你的 putty,通过中间盒你的最终目的地。您仍然需要进行一些 ssh 连接,但是一旦设置好,您就可以直接从 Windows 系统跨 vnc 或 rdp,我相信这是您想要做的。
例子
附加奖励- 没有多少人知道这一点,但此过程也可用于代理 IPv6/IPv4 流量。SSH 不关心它用于隧道的协议,因此理论上您可以从仅 IPv4 的系统访问仅 IPv6 的主机,因为 ssh 服务器是双堆栈(同时具有 IPv4 和 IPv6 地址)。
小智 21
如果您想对两个跃点都使用 PuTTY,还有一个替代方法。在本例中,我们从网关 #1 (10.0.1.123) 跳到网关 #2 (10.0.1.456) 到 10.0.1.789 上的端口 80。
首先创建到网关 #1 的跃点。首先建立与第一台服务器的连接。在 Connection>SSH>Tunnels 中设置到第二个网关的隧道。在本例中,我们将端口 2222 转发到第二个网关。


现在我们将设置第二跳。我们将通过第一个网关到下一个网关并在第二个网关上设置端口转发。连接是通过端口 2222 连接到 localhost。这将通过正在运行的 ssh 连接隧道连接到第二个跃点。在这个连接上,我们设置了一个从端口 3333 到 10.0.1.789 的端口转发。


现在打开浏览器并导航到 127.0.0.1:3333,您将通过两个 SSH 连接隧道连接到 10.0.1.789:80