Node.jsでRDSにSSH接続ができない
解決したいこと
Node.jsでアプリを開発しています。
RDSにSSHでポートフォワードで接続して、アプリを表示させたいのですがうまくできません。
以下の処理イメージです。
・PC→EC2にSSH接続
・EC2→RDSにSSH接続
発生している問題・エラー
接続に時間がかかり、タイムアウトエラーになってしまいます。
Error: connect ETIMEDOUT 'RDSのHOST':'RDSのPORT'
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) {
errno: -4039,
code: 'ETIMEDOUT',
syscall: 'connect',
address: 'RDSのHOST',
port: RDSのPORT
}
書いたコードは以下の通りです。
該当するソースコード
const { Client } = require('pg');
const ssh = require('tunnel-ssh');
const fs = require('fs');
// sshトンネルを開始
ssh({
//SSHに関する情報
username: "ec2-user",//適時変更
port: "22",//適時変更
host: "SSHのIP",//適時変更
privateKey:fs.readFileSync('秘密鍵'),//適時変更
password: '',//適時変更
//RDSに関する情報
dstPort: "5432",//適時変更
dstHost: "RDSのHOST名",//適時変更
//ローカルPCに関する情報
localHost: "localhost",//適時変更
localPort: "Node.jsをインストールしているPCのポート",//適時変更
}, function (errssh) {
if (errssh) {
console.log(errssh);
process.exit();
}
console.log('connected');
// postgresql
// RDSに接続する際の情報を記載
var client = new Client({
host : "HOST名",//適時変更
user : "postgres",//適時変更
password : "パスワード",//適時変更
database : "DB名",//適時変更
port : "5432"
});
client.connect();
});
自分で試したこと
その他のツールで正常に接続できるか確認するために、Tera TermやMk-2などのツールでSSH接続しましたが、正常に接続できクエリを発行することまでできました。
Node.jsで接続しようとするとうまくできませんでした。
0 likes