ter*_*don 16 mysql linux ssh-tunnel
我需要访问我实验室远程服务器上的MySQL数据库.只有登录到远程网络上的网关服务器后,才能访问服务器:
local server => gateway server => MySQL server.
Run Code Online (Sandbox Code Playgroud)
我可以使用端口24222 ssh到网关.
我正在使用PERL DBI模块.这是我在实验室时用来连接的东西:
my $host="1.2.3.4";
my $database="dbname";
my $user="user";
my $pw="pass";
my $table="table";
Run Code Online (Sandbox Code Playgroud)
我想我必须通过网关服务器建立到数据库服务器的隧道.我该怎么做呢?如果MySQL数据库在网关上,我可以像这样打开一个隧道:
$ ssh -f user@gateway -L 3307:127.0.0.1:3306 -N
Run Code Online (Sandbox Code Playgroud)
如何修改它以通过网关上的开放端口24222隧道传输到1.2.3.4上的MySQL服务器?
更新:
使用@ anttir的答案我得到了如下工作.
设置隧道:
$ ssh -fN -p 24222 user1@11.12.13.14 -L 3307:1.2.3.4:3306
Run Code Online (Sandbox Code Playgroud)设置脚本变量:
my $host="127.0.0.1";
my $port = 3307;
Run Code Online (Sandbox Code Playgroud)Ant*_*ult 20
使用命令:
$ ssh -f user@gateway -L 3307:1.2.3.4:3306 -N
Run Code Online (Sandbox Code Playgroud)
这表明与客户端localhost 3307的所有连接都将通过SSH隧道转发到网关,然后连接到主机1.2.3.4到端口3306.
编辑:如果SSH在端口24222上,那么
$ ssh -f user@gateway -p 24222 -L 3307:1.2.3.4:3306 -N
Run Code Online (Sandbox Code Playgroud)
如果您需要使用多个跃点来访问 MySQL 服务器,我首先建议创建 .ssh/config 文件并像这样使用 ProxyCommand:
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
Run Code Online (Sandbox Code Playgroud)
然后像这样转发端口:
ssh -f mysql_access_server -L 3309:sqlmaster.example.com:3306 -N
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样访问MySQL服务器:
mysql --user=root --host=127.0.0.1 --password=root --port=3309 some_db_name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11778 次 |
| 最近记录: |