通过ssh隧道连接数据库

时间:2014-05-31 04:22:09

标签: 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.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地址不正确。

1 个答案:

答案 0 :(得分:3)

连接到隧道端点时,主机名是您的本地主机,因为转发端口所在的位置。

ssh -fNT -L 55555:db.projectX.company.com:5432 app.projectX.company.com
psql -h localhost -p 55555

BTW,PgAdmin-III提供ssh隧道自动化。另一方面,它是一个没有psql方便\commands的大型GUI应用程序。

编写一个sshpsql bash脚本来激活ssh隧道,存储ssh进程的pid,启动psql,让你做你想做的事情,并在退出时杀掉它,这是非常微不足道的ssh隧道。你也想TRAP "kill $sshpid" EXIT所以你在不洁净的出口处杀死隧道。