使用node-mysql中的SSH隧道连接到MySQL

当使用node-mysql npm包时,是否可以使用SSH密钥而不是密码连接到MySQL服务器?

我今天得到了这个确切的系统,应该花了10分钟,但是我写了一个愚蠢的错误,浪费了5个小时(这是我在5分钟内努力的一个直接结果)。

您可以完全独立完成SSH隧道组件,然后使用通过SSH隧道的TCP将node-mysql(或任何其他sql客户端…)指向您的数据库。

只需要像这样设置你的SSH隧道

 ssh -N -p 22 sqluser@remoteserverrunningmysql.your.net -L 33306:localhost:3306 

把它留在后台(更深入的信息参见这样的文章 )。

然后发送任何MySQL客户端到本地主机上的端口33306。 它将实际上连接,就像你在远程服务器上,并使用端口3306。

非常感谢史蒂夫你的回答帮助我很多。 只是为了更清楚地使用它

ssh -f user@personal-server.com -L 2000:personal-server.com:25-N

-f告诉ssh在执行命令之前进入后台。 接下来是您要login的用户名和服务器。 -L 2000:personal-server.com:25的forms是-L local-port:host:remote-port。 最后,-N指示OpenSSH不在远程系统上执行命令

要连接到mongo,使用您设置为本地端口的任何端口(在这种情况下,端口是2000)

例如,假设我想连接一个IP地址为192.168.0.100的远程服务器,并且mongo正在27017端口上运行。

假设一个名为elie的用户使用密码eliepassword可以访问端口22上的ssh我将不得不这样做首先在terminal上运行以下命令:

ssh -f elie@192.168.0.100 -L 2002:127.0.0.1:27017-N

在我的mongo连接,我会做:

var mongoose = require('mongoose');

mongoose.connect( '的mongodb://本地主机:2002 / MyDatabase的');

module.exports = mongoose.connection;

我希望这个清楚。

截至今天的版本v2.1.0支持ssl的安全连接 。 请注意,您的ssh密钥configuration与mysql无关:请参阅如何为服务器和客户端设置mysql安全连接