我有linux (Ubuntu)服务器,我只能通过ssh (端口22)访问它。在该服务器上,有一个MySQL数据库监听端口3306。是否可以使用putty (在我的机器上)和隧道(在linux机器上)创建一个隧道,从我的机器上的本地端口(比如4000),到端口22上的linux服务器,然后在端口3306上从服务器到自己?
发布于 2014-03-14 09:31:51
输入ssh隧道命令的机器(或者在您的例子中:启动Putty )称为“您的主机”。


-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到名为forwardToHost的计算机上的端口onPort,这可以从connectToHost机器到达。-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到名为forwardToHost的计算机上的端口onPort,这可以从本地计算机到达。第一张图片代表你的情况。名为your host的蓝色框是您从Windows机器启动Ubuntu服务器的Putty,在我的映像中称为remotehost。连接到绿色端口(在您的情况下是端口号4000)将转发到您的Ubuntu服务器机器(即Ubuntu服务器本身)的localhost的粉红色MySQL端口3306。
设置它
启动Putty并在左侧的树中输入通常的连接设置(主机名或IP地址),导航到
连接→SSH→隧道
并使用源端口4000 (映像中的123)和目标localhost:3306 (映像中的localhost:456)创建一个新的本地隧道。
不要忘记单击Add。
然后导航回会话,然后单击Save以保留下一次的设置。现在您可以使用保存的连接登录到您的服务器,并且在成功登录之后,每次您连接到主机上的端口4000时,您实际上都会连接到Ubuntu服务器上的端口3306。

发布于 2012-10-18 18:18:30
简单的回答是肯定的,但请注意隧道实际上是在您的计算机上启动的。它的工作方式是创建到服务器的SSH连接(这是安全的),然后指示SSH侦听您侧的端口,并将任何连接转发到服务器端特定主机地址上的特定端口。隧道的目标不必是同一台服务器--它可以是任何其他有效地址--在这种情况下,它不是运行SSH服务器本身的服务器--它将看到传入的连接,就好像它来自SSH服务器而不是来自您的客户端。
要设置它,打开Putty配置对话框,选择通常用于访问服务器的连接的设置,然后单击"load“(而不是" open ")。然后在左侧的树中,导航到Connection->SSH->隧道,并创建一个新的“本地”隧道,该隧道具有源端口4000和目标"localhost:3306“(因为从服务器的角度来看,目标地址是在本地主机上解析的)。然后,导航回“会话”,并单击“保存”,以保留您的设置下一次。现在您可以使用保存的连接登录到您的服务器,并且在成功登录之后,每次您连接到计算机上的端口4000时,您实际上都会连接到服务器上的端口3306。
如果您真的进入隧道,并运行一个MS客户端,那么我建议您看看油灰隧道经理,它使用Putty轻松地设置和运行隧道,而不需要打开putty控制台。
https://unix.stackexchange.com/questions/52234
复制相似问题