我在DBeaver上有一个使用ssh隧道的连接,如下所示:
sshHostname;
sshPort;
sshUser;
sshPassword;
在与数据库的实际连接上,我有:
dbHost;
dbPort;
dbName;
dbUsername;
dbPassword;
我的node js代码看起来像这样:
const { Pool, Client } = require('pg')
const ssh2 = require('ssh2');
const dbServer = {
host: dbHost,
port: dbPort,
database: dbName,
username: dbUser,
password: dbPassword
}
var c = new ssh2();
c.connect({
host: sshHostname,
port: 22,
username: sshUser,
password: sshPassword
});
c.on('ready', function () {
c.forwardOut(sshHostname, '22', dbHost, dbPort , function(err, data) {
const client = new Client({
host: 'localhost',
port: dbPort,
database: dbName,
user: dbUser,
password: dbPassword,
})
client.connect(function (err) {
if (err) {console.log(err)}
else {console.log('connected...')}
});
client.end();
})
});
出现以下错误:
Error: connect ECONNREFUSED 127.0.0.1:dbPort
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1133:16) {
errno: -4078,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: dbPort
}
我尝试了各种配置和各种库,但都没有成功。
你知道如何通过nodejs通过隧道连接到数据库吗?
我有一种感觉,我实际上没有连接到ssh隧道。
1条答案
按热度按时间46scxncf1#
连接再融合的原因可能有很多种。
当通过SSH建立连接时,您的计算机上应该准备好SSH密钥,并将其作为SSH白色名单的一部分。这是许多开发人员可能遇到的常见错误,但由于您的关键信息是隐藏的,我们可能需要您提供这方面的更多详细信息。