2014-11-25 36 views
-1

我想配置一个SSH隧道绕过远程数据库(remote_mysql_server)的mysql调用由有权访问它(remote_host)的主机,但我不知道有什么区别(注意本地端口之前结肠:):SSH隧道之间的差异

> ssh -f [email protected]_host -L 3306:remote_mysql_server:3306 -N 
> lsof -i :3306 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
ssh  16797 vagrant 4u IPv6 31697  0t0 TCP localhost:mysql (LISTEN) 
ssh  16797 vagrant 5u IPv4 31698  0t0 TCP development:mysql (LISTEN) 

> ssh -f [email protected]_host -L :3306:remote_mysql_server:3306 -N 
> lsof -i :3306 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
ssh  16805 vagrant 4u IPv6 31697  0t0 TCP *:mysql (LISTEN) 
ssh  16805 vagrant 5u IPv4 31698  0t0 TCP *:mysql (LISTEN) 

他们都为我工作执行mysql -h 127.0.0.1 -u dbusername -pPasswordDB database

回答

1

-L选项的格式是:

-L [bind_address:]port:host:hostport 

bind_address:的部分是可选的,并且如果它缺少隧道仅结合到localhost(默认行为可以使用ssh配置GatewayPorts选项改变)。但是,如果您指定它,它会绑定到您指定的内容或所有接口,如果您使用空bind_address*

+0

据我所知,bind_address参数然后是来自端口3306上的请求地址。这就解释了为什么对我来说,从localhost执行mysql指令对他们没有任何影响,但在第二种情况下,我可以使用其他机器上的'-h development'连接到MySQL。谢谢! – marcostvz 2014-11-25 13:51:23