Postgresql 通过ssh隧道连接到数据库

Postgresql 通过ssh隧道连接到数据库,postgresql,shell,ssh,proxy,ssh-tunnel,Postgresql,Shell,Ssh,Proxy,Ssh Tunnel,我们的生产数据库只能从生产应用服务器访问。我可以登录到生产应用程序服务器,也可以登录到数据库的psql,但是我想设置一个ssh隧道,允许我从我的工作盒访问生产数据库 理想情况下,我可以从我的工作盒运行一个命令,在生产应用服务器上设置隧道/代理 这是我想到的,但它不起作用 user@workbox $ ssh -fNT -L 55555:db.projectX.company.com:5432 app.projectX.company.com user@workbox $ psql -h app.

我们的生产数据库只能从生产应用服务器访问。我可以登录到生产应用程序服务器,也可以登录到数据库的psql,但是我想设置一个ssh隧道,允许我从我的工作盒访问生产数据库

理想情况下,我可以从我的工作盒运行一个命令,在生产应用服务器上设置隧道/代理

这是我想到的,但它不起作用

user@workbox $ ssh -fNT -L 55555:db.projectX.company.com:5432 app.projectX.company.com
user@workbox $ psql -h app.projectX.company.com -p 55555

psql: could not connect to server: No route to host
Is the server running on host "app.projectX.company.com" (10.1.1.55) and accepting
TCP/IP connections on port 55555?

报告的IP地址不正确。

连接到隧道端点时,主机名是您的本地主机,因为转发端口就是在本地主机上公开的

ssh -fNT -L 55555:db.projectX.company.com:5432 app.projectX.company.com
psql -h localhost -p 55555
顺便说一句,PgAdmin III提供ssh隧道自动化。另一方面,它是一个大型GUI应用程序,没有
psql
的方便
\commands


编写一个
sshpsql
bash脚本来启动ssh隧道,存储ssh进程的pid,启动psql,让您做您想做的事情,并在退出时终止ssh隧道,这非常简单。您还需要
捕获“kill$sshpid”出口
,这样您就可以在不干净的出口杀死隧道。

谢谢你,伙计!我在PgAdmin中使用了隧道自动化功能,但这需要启动另一个应用程序,并让我的终端保持舒适的亮度。