用于 Sequelize PostgreSQL 数据库的 SSH 隧道

Ken*_*all 0 database ssh-tunnel sequelize.js

我正在尝试访问隐藏在堡垒 EC2 实例后面的远程数据库 (AWS RDS) 之一。我可以通过我的 SQL 客户端轻松访问数据库,但无法通过我正在构建的 CLI 工具(使用Sequelizetunnel-ssh)访问它。我一直在关注这个GitHub Gist,但它在任何地方都使用相同的值,不幸的是它非常令人困惑。

我承认我对 SSH 隧道的一般理解很差,这在下面的示例中可能很明显。我的配置有问题吗?


数据库配置

Host:     wdXXXXXXXXXXXX.XXXXXXXXX.XX-XXXXX-X.rds.amazonaws.com
Port:     5432
User:     [DB_USER]
Password: [DB_PASSWORD]
Database: [DB_NAME]
Run Code Online (Sandbox Code Playgroud)

堡垒配置

Server:   35.183.XX.XXX
Port:     22
Password:
SSH Key:  ~/.ssh/id_rsa.aws
Run Code Online (Sandbox Code Playgroud)
Host:     wdXXXXXXXXXXXX.XXXXXXXXX.XX-XXXXX-X.rds.amazonaws.com
Port:     5432
User:     [DB_USER]
Password: [DB_PASSWORD]
Database: [DB_NAME]
Run Code Online (Sandbox Code Playgroud)

我上面的配置有问题吗?我对隧道的理解是否因我在隧道配置中使用的值而有缺陷?

另外,为什么除非我调用await函数(似乎根本不是 a)Promise否则隧道回调似乎不会被调用?

PS 还有这个Sequelize GitHub问题提到通过 SSH 隧道与 Sequelize 连接,但没有给出示例。

Ken*_*all 5

我最终弄明白了这个问题并且能够解决这个问题(它开始后 12 小时)...数据库和堡垒配置在技术上是正确的,但是我错误地传递了一些值(由于对 SSH 隧道的理解有缺陷)。

数据库配置

Host:     wdXXXXXXXXXXXX.XXXXXXXXX.XX-XXXXX-X.rds.amazonaws.com
Port:     5432
User:     [DB_USER]
Password: [DB_PASSWORD]
Database: [DB_NAME]
Run Code Online (Sandbox Code Playgroud)

堡垒配置

Server:   35.183.XX.XXX
Port:     22
Password:
SSH Key:  ~/.ssh/id_rsa.aws
Run Code Online (Sandbox Code Playgroud)
Host:     wdXXXXXXXXXXXX.XXXXXXXXX.XX-XXXXX-X.rds.amazonaws.com
Port:     5432
User:     [DB_USER]
Password: [DB_PASSWORD]
Database: [DB_NAME]
Run Code Online (Sandbox Code Playgroud)

最后,主要的变化是localhost在 Sequelize 配置中使用,因为 SSH 隧道“出现”在数据库实例上,因此它应该引用自身。可能还有其他一些必要的调整(我知道我曾经尝试过),但最终我完好无损地出现了。