postgresql 通过nodejs上的ssh连接到postgres

dced5bon  于 2023-01-25  发布在  PostgreSQL
关注(0)|答案(1)|浏览(181)

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

46scxncf

46scxncf1#

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

相关问题