Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。
7年前关闭。
Improve this question
我按照这篇文章中的描述打开了一个ssh隧道:Zend_Db: How to connect to a MySQL database over SSH tunnel?
但是现在我不知道我实际上做了什么。此命令会影响服务器上的任何内容吗?
以及如何关闭此隧道,因为现在我无法正确使用本地mysql。
我使用OSX Lion,并且服务器在Ubuntu 11.10上运行。
本质上,一旦您输入了用于建立连接的密码,就将
因此,
当您连接到本地端口
是的,它在端口3306上的localhost和mysql-server.com之间建立了连接。
如果您使用了
这是因为您已经有效地“捕获”了本地
因此,如果使用了
想改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。
7年前关闭。
Improve this question
我按照这篇文章中的描述打开了一个ssh隧道:Zend_Db: How to connect to a MySQL database over SSH tunnel?
但是现在我不知道我实际上做了什么。此命令会影响服务器上的任何内容吗?
以及如何关闭此隧道,因为现在我无法正确使用本地mysql。
我使用OSX Lion,并且服务器在Ubuntu 11.10上运行。
最佳答案
假设您运行了以下命令:ssh -f [email protected] -L 3306:mysql-server.com:3306 -N
,如您所链接的文章中所述。
命令的细分:
ssh
:这很不言自明。调用ssh
。 -f
:(来自man ssh
页面)本质上,一旦您输入了用于建立连接的密码,就将
ssh
发送到后台。它会在localhost
处给您shell提示,而不是让您登录remote-host
。 [email protected]
:您要登录的远程服务器。 -L 3306:mysql-server.com:3306
:这是有趣的一点。 -L
(来自man ssh
页面):因此,
-L 3306:mysql-server.com:3306
将本地端口3306
绑定(bind)到主机3306
上的远程端口mysql-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
进程的所有流量转发给了远程ssh -f [email protected] -L 33060:mysql-server.com:3306 -N
进程。更好的解决方案是在端口转发中不使用本地端口3306 。使用诸如33060之类的未使用的东西。(通常使用较少的数字;通常将类似这样的组合移植为端口:“2525-> 25”,“8080-> 80”,“33060-> 3306”或相似。使记忆更加容易)。因此,如果使用了
localhost
,则需要将Zend connect-to-mysql函数指向端口33060
上的mysql-server.com
,它将连接到端口3306
上的localhost
。您显然仍然可以在端口3306
上连接到mysql
,因此您仍然可以使用本地ojit_code服务器。关于mysql - 如何关闭此ssh隧道? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9447226/
10-10 11:24