2013-06-24 37 views
1

从我的本地机器上,我有服务器A 一旦服务器A SSH访问,我通过3306端口连接到MySQL服务器B上的服务器B.隧道连接到MySQL没有SSH访问

mysql -h <B.hostname> -P 3306 -u <username> -p 

我没有ssh访问服务器B,无论是从本地机器还是从服务器A.

我想要做的是从本地机器访问服务器B上的mysql。我找到的每个隧道/端口转发链接假设我可以SSH入服务器B.

回答

3

ssh的-L采取本地端口,远程主机名连接您连接到的ssh服务器,以及远程端口。在这种情况下,你会遇到:

ssh -L 3307:B.hostname:3306 A.hostname

这将使SSH连接到A,当你使用一个本地MySQL客户端(mysql -H localhost -P 3307 -u ...)后连接到端口3307,A的sshd的将启动一个连接B.hostname:你的3306。

+1

非常感谢。出于某种原因,我不得不在第二步中使用127.0.0.1而不是localhost,但它工作正常。 – Dan

+0

这可能有几个原因。例如,localhost可能会解析为IPv4(127.0.0.1)和IPv6地址(:: 1),ssh只能在127.0.0.1:3307上侦听,而mysql可能会尝试连接[:: 1]:3307。 – oh7lzb

0

听起来像您必须使用远程端口转发。试试这个本地主机上:

[auto]ssh -R 1111:127.0.0.1:2222 -f -N -4Cp1234 [email protected] 

所以,你得到你得到localhost:1111(当你登录上servername.net)您localhost:2222(本地机器)应有尽有,交通上servername.net:1234会通过SSH。

如果您的“服务器A”可以以某种方式访问​​“服务器B”,并且您可以通过SSH访问“服务器A”,那可能对您有帮助。