首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSH隧道:本地=>网关=> MySQL服务器

SSH隧道:本地=>网关=> MySQL服务器
EN

Stack Overflow用户
提问于 2012-09-19 12:28:52
回答 3查看 13.1K关注 0票数 18

我需要访问我实验室远程服务器上的MySQL数据库。只有当我登录到远程网络上的网关服务器时,才能访问该服务器:

代码语言:javascript
复制
local server => gateway server => MySQL server.

我可以使用端口24222到网关。

我正在使用PERL DBI模块。这就是我在实验室时用来连接的东西:

代码语言:javascript
复制
my $host="1.2.3.4";
my $database="dbname";
my $user="user";
my $pw="pass";
my $table="table";    

我想我必须通过网关服务器建立一个通往数据库服务器的隧道。我该怎么做呢?如果MySQL数据库在网关上,我可以像这样打开一个隧道:

代码语言:javascript
复制
$ ssh -f user@gateway -L 3307:127.0.0.1:3306 -N 

如何将其修改为通过网关上的开放端口24222通过1.2.3.4的MySQL服务器?

更新:

使用@anttir的答案,我让它工作如下。

  1. 设置隧道: $ ssh -fN -p 24222 user1 1@11.12.13.14 -L 3307:1.2.3.4:3306
  2. 设置脚本变量: 我的$host=“127.0.0.1”,$port = 3307;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-19 12:37:37

有命令:

代码语言:javascript
复制
$ ssh -f user@gateway -L 3307:1.2.3.4:3306 -N 

这说明到客户机本地主机3307的所有连接将通过SSH隧道转发到网关,然后连接到主机1.2.3.4到端口3306。

编辑:如果SSH位于端口24222,那么

代码语言:javascript
复制
$ ssh -f user@gateway -p 24222 -L 3307:1.2.3.4:3306 -N 
票数 22
EN

Stack Overflow用户

发布于 2013-09-26 07:42:42

如果需要使用多个跃点访问MySQL服务器,我首先建议创建. .ssh/config文件并使用ProxyCommand,如下所示:

代码语言:javascript
复制
  Host gateway
     HostName example.com
     User foo
     Port 22
     IdentityFile ~/.ssh/id_rsa.pub

  Host mysql_access_server
      HostName example-web.com
      Port 22
      User foo
      ProxyCommand ssh -A gateway nc %h %p

然后像这样向前移动:

代码语言:javascript
复制
ssh -f mysql_access_server -L 3309:sqlmaster.example.com:3306 -N

然后您可以访问MySQL服务器,如下所示:

代码语言:javascript
复制
mysql --user=root --host=127.0.0.1 --password=root --port=3309 some_db_name
票数 5
EN

Stack Overflow用户

发布于 2012-09-19 12:45:09

使用隧道:

代码语言:javascript
复制
ssh -f user@gateway -L 3307:1.2.3.4:3306 -N 

您将能够连接到localhost端口3307上的数据库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12494695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档