如何使用SSH隧道连接到远程MySQL服务器?

时间:2014-03-25 15:31:03

标签: ssh remote-access tunneling

我是第一次使用SSH隧道,所以我试图了解如何配置它。

我有一台远程Linux服务器,它托管了我试图连接的MySQL数据库。为了通过只识别本地数据库的软件直接访问MySQL数据库,我认为SSH隧道是设置访问权限的正确方法,对吗?

现在,我正试图在我的家中设置隧道。正在运行试图访问MySQL数据库的软件的计算机。我的第一个问题是这是反向隧道还是正常隧道?其次,是本地隧道还是远程隧道?

最后,根据我的理解,我的代码应该看起来像

ssh -L 8080:mylinuxserver.mycompany.com:22 myuser@mylinuxserver.mycompany.com

这是对的吗?是我的源端口' 22'因为我使用SSH并且是我的目标端口8080(或者是否有更合适的东西)?

当我尝试使用上面的代码时,我能够使用我的密码登录(因为我的密钥已经在MyLinuxServer中)但是当我ping localhost:8080时,它找不到主机。

我做错了什么?

2 个答案:

答案 0 :(得分:5)

  

我有一台远程Linux服务器,托管我试图连接的MySQL数据库

命令应为:

ssh -L 8080:localhost:3306 myuser@mylinuxserver.mycompany.com

其中:

  1. 8080 :是工作站上的本地端口
  2. localhost :与mylinuxserver.mycompany.com
  3. 对应
  4. 3306 localhost上方的MySQL端口。
  5. 然后连接(从您的工作站)到MySQL:

    mysql -h 127.0.0.1 --port=8080 
    

    此外,ping localhost:8080是错误的。 Ping无法以这种方式工作。

答案 1 :(得分:-2)

试试这个:

ssh -f ssh_user@mylinuxserver.mycompany.com -L 3307:mysql1.example.com:3306 -N

接下来,访问您尝试连接的mysql:

mysql -h 127.0.0.1 -P 3307