使用腻子通过多跳进行SSH隧道


13

我遇到一种情况,我想连接到运行VNC的Linux机器(简称为VNCServer),该机器位于两台连续的Linux机器后面,例如,要SSH到VNCServer,我必须先从笔记本电脑SSH到Gateway1,然后从Gateway1 Shell进入我使用SSH进入Gateway2,然后从该Shell最终使用SSH进入VNCServer。我无法更改网络设计和访问流程笔记本电脑->网关1->网关2->服务器。我在Gateway1上没有root特权,除22和5901之外的所有端口都已关闭。

有什么方法可以在笔记本电脑上启动VNC查看器并访问VNCServer?我知道可以使用ssh隧道功能完成此操作,并且Windows笔记本电脑上有腻子(抱歉,不能在工作笔记本电脑上安装Linux或Cygwin等)。任何帮助将不胜感激,因为这将使我的生活更加轻松!

Answers:


19

Putty确实支持ssh隧道,如果展开Connection(连接)SSH树,则会看到隧道条目。

本地隧道会在Windows机器上打开一个localhost端口,该端口可远程访问您指定的IP地址和端口。例如,当我尝试将RDP连接到家里的桌面时,通常会选择一个随机的本地端口(例如7789),然后将桌面的本地IP地址(1.2.3.4:3389)设置为远程主办。确保单击“添加”,然后单击“应用”。此时,当您rdp到127.0.0.1:7789时,您将通过腻子会话连接到1.2.3.4:3389。

这就是乐趣所在。如果您随后在中间盒上设置端口隧道,设置您指定为腻子中远程端口的本地端口,则可以通过腻子弹跳,通过中间盒到达最终目的地。您仍然需要做一些ssh连接,但是一旦设置完成,您就可以直接从Windows系统越过vnc或rdp,我相信您正在这样做。

  1. 转到Putty中的“隧道”面板(如果ssh会话已经处于活动状态,则可以从上下文菜单访问Connections-> SSH-> Tunnel,或者在刚启动腻子时在开始的连接屏幕中访问)
  2. 创建具有本地源15900和远程源127.0.0.1:15900的隧道
  3. 连接(如果尚未连接)到Gateway1。
  4. 在Gateway1上,ssh -L 127.0.0.1:15900:VNCServerIP:5900 user @ Gateway2
  5. 一旦通往Gateway2的ssh启动,尝试将vnc切换到127.0.0.1:15900 -现在您应该会在远端看到VNC屏幕!

增加的奖励 -很少有人知道这一点,但是此过程也可以用于代理IPv6 / IPv4流量。SSH不在乎它为隧道使用什么协议,因此理论上您可以从仅IPv4的系统访问仅IPv6的主机,因为ssh服务器是双协议栈(具有IPv4和IPv6地址)。


15

如果要对两个跃点都使用PuTTY,则有另一种方法。在此示例中,我们从网关#1(10.0.1.123)跳到网关#2(10.0.1.456)到10.0.1.789上的端口80。

  1. 首先创建到网关1的跃点。首先建立与第一台服务器的连接。在“连接”>“ SSH”>“隧道”中设置到第二个网关的隧道。在此示例中,我们将端口2222转发到第二个网关。

    连接到服务器

    建立隧道

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

    在此处输入图片说明

    在此处输入图片说明

  3. 现在打开浏览器并导航至127.0.0.1:3333,您将通过两个SSH连接建立隧道以访问10.0.1.789:80


1
有没有一种方法可以使用单个腻子会话并在SSH->隧道菜单中配置两个隧道来实现相同目的?这样,您只需要打开一个腻子实例?
乌尔里希
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.