通过nodejs上的ssh连接到postgres



我在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隧道。

连接拒绝的原因可能多种多样。

当通过SSH进行连接时,您应该在计算机上准备好SSH密钥,并将其作为SSH白名单的一部分。这是许多开发人员可能会遇到的常见错误,但由于您的关键信息是隐藏的,我们可能需要您提供更多这方面的详细信息。

最新更新