了解 SSH 隧道

Muh*_*ana 17 ssh ssh-tunneling

我有 linux (Ubuntu) 服务器,我只能通过 ssh(端口 22)访问它。在该服务器上有一个 MySQL 数据库侦听端口 3306。是否可以使用腻子(在我的机器上)和隧道(在 linux 机器上)从我机器上的本地端口(比如 4000)创建一个隧道,到linux 服务器在端口 22 上,然后在端口 3306 上从服务器到它自己?

eri*_*rik 23

我画了一些草图

键入 ssh 隧道命令的机器(或在您的情况下:启动带隧道的腻子)称为»your host«

从本地开始的 ssh 隧道


从远程开始的 ssh 隧道

介绍

  1. 当地的: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHost意思是:用 ssh 连接到connectToHost,并将所有连接尝试转发到机器上称为的本地 sourcePort端口onPort,该端口forwardToHost可以从connectToHost机器访问。

  2. 偏僻的: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHost表示:使用 ssh 连接到connectToHost,并将所有连接尝试转发到名为 的机器上的远程 sourcePort端口onPort,该端口forwardToHost可以从您的本地机器访问。

你的榜样

第一张图片代表您的情况。蓝色框your host是你的 Windows 机器,你从它启动 Putty 到你的 Ubuntu 服务器,remotehost在我的图像中称为。连接到绿色港口(你的情况端口号4000)转发到粉红色的MySQL端口3306localhost你的Ubuntu服务器的机器(即Ubuntu的服务器本身)。

使用 Putty 进行设置

启动 Putty 并输入您常用的连接设置(主机名或 IP 地址) 在左侧的树中,导航到

联系 ?SSH ? 隧道

并使用源端口(图像中的 123)和目的地(图像中的 localhost:456 )创建一个新的本地隧道。4000localhost:3306

不要忘记点击添加

然后导航回会话并单击保存以保留您的设置以供下次使用。现在您可以使用保存的连接登录到您的服务器,成功登录后,每次连接到主机上的 4000 端口时,您实际上都会连接到 Ubuntu 服务器上的 3306 端口。

用腻子创建前向隧道

  • 令人敬畏且非常说明性的答案+1 (2认同)

Gus*_*uss 16

简单的答案是肯定的,但请注意隧道实际上是在您的计算机上启动的。它的工作方式是您创建到服务器的 SSH 连接(这是安全的),然后指示 SSH 侦听您一侧的端口并将进入的任何连接转发 - 到特定主机地址上的特定端口服务器端。隧道的目标不必是同一台服务器——它可以是任何其他有效地址,如果它不是运行 SSH 服务器本身的服务器——它将看到传入的连接,好像它来自 SSH 服务器而不是来自您的客户。

要进行设置,请打开 Putty 配置对话框,选择您通常用于访问服务器的连接设置,然后单击“加载”(而不是“打开”)。然后在左侧的树中,导航到 Connection->SSH->Tunnels 并使用源端口 4000 和目标“localhost:3306”创建一个新的“本地”隧道(因为目标地址在服务器上解析,从服务器的角度来看,MySQL 端口在本地主机上)。然后导航回“会话”并单击“保存”以保留您的设置以供下次使用。现在您可以使用保存的连接登录到您的服务器,成功登录后,每次连接到计算机上的 4000 端口时,您实际上都会连接到服务器上的 3306 端口。

如果您认真对待隧道并运行 MS-Windows 客户端,那么我建议您查看Putty Tunnel Manager,它使用 Putty 轻松设置和运行隧道,而无需打开 Putty 控制台。