Jac*_*cob 86 mysql macos ssh ubuntu
我打开了一个ssh隧道,如本文所述:Zend_Db:如何通过SSH隧道连接到MySQL数据库?
但现在我不知道我到底做了什么.此命令是否会影响服务器上的任何内容?我如何关闭此隧道,因为现在我无法正确使用我的本地mysql.
我使用OSX Lion,服务器运行在Ubuntu 11.10上.
sim*_*ont 219
假设您运行此命令:ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -N如您链接的帖子中所述.
命令细分:
ssh:这很明显不言自明.调用ssh.-f:(从man ssh页面)
请求ssh在命令执行之前转到后台.如果ssh要求密码或密码短语,但用户希望在后台使用密码或密码短语,这很有用.
基本上,ssh一旦输入任何密码以建立连接,发送到后台; 它会将shell提示返回给您,localhost而不是将您登录到remote-host.
user@mysql-server.com:您要登录的远程服务器. -L 3306:mysql-server.com:3306:这是有趣的一点.-L(来自man ssh页面):
[bind_address:] port:host:hostport指定将本地(客户端)主机上的给定端口转发到远程端的给定主机和端口.
因此,-L 3306:mysql-server.com:3306将本地端口绑定3306到主机上的远程端口 .3306mysql-server.com
当您连接到本地端口时3306,连接将通过安全通道转发到mysql-server.com.在远程主机上,mysql-server.com然后连接到mysql-server.com端口3306.
-N:不执行命令.这对"只转发端口"非常有用(引用手册页).
此命令是否会影响服务器上的任何内容?
是的,它在端口3306上建立localhost和mysql-server.com之间的连接.
我该如何关闭这条隧道......
如果你已经使用过-f,你会注意到ssh你打开的过程进入后台.关闭它是运行的更好的方法ps aux | grep 3306,找到pid的ssh -f ... -L 3306:mysql-server.com:3306 -N,和kill <pid>.(或者也许kill -9 <pid>;我忘记了,如果只是kill工作).这有利于不杀死所有其他ssh连接; 如果你有一个以上,重新建立它们可能会轻微......痛苦.
...因为现在我无法正确使用我的本地mysql.
这是因为您已经有效地"捕获"了本地 mysql进程并将尝试连接到该进程的任何流量转发到远程 mysql进程.一个更好的解决方案是在端口转发中不使用本地端口3306.使用未使用的东西,例如33060.(通常较少使用较高的数字;将这样的组合移植到前面是很常见的:"2525-> 25","8080-> 80","33060-> 3306"或类似.让记忆稍微容易一些).
所以,如果您使用过ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -N,那么您可以将Zend connect-to-mysql函数指向localhoston port 33060,该端口将连接到mysql-server.comon port 3306.您显然仍然可以连接到localhost端口3306,因此您仍然可以使用本地mysql服务器.
the*_*imp 40
这将终止您从终端打开的所有ssh会话.
sudo killall ssh
Run Code Online (Sandbox Code Playgroud)
aar*_*ron 20
注意:添加为答案,因为注释不支持代码块.
在我看来,最好不要使用-f,而只是正常处理背景&.这将为您提供杀死所需的确切 pid:
ssh -N -L1234:other:1234 server &
pid=$!
echo "waiting a few seconds to establish tunnel..."
sleep 5
... do yer stuff... launch mysql workbench whatever
echo "killing ssh tunnel $pid"
kill $pid
Run Code Online (Sandbox Code Playgroud)
或者更好的是,只需将其创建为包装脚本:
# backend-tunnel <your cmd line, possibly 'bash'>
ssh -N -L1234:other:1234 server &
pid=$!
echo "waiting a few seconds to establish tunnel..."
sleep 5
"$@"
echo "killing ssh tunnel $pid"
kill $pid
Run Code Online (Sandbox Code Playgroud)
backend-tunnel mysql-workbench
backend-tunnel bash
| 归档时间: |
|
| 查看次数: |
90320 次 |
| 最近记录: |