通过 SSH 隧道与远程服务器上的 PostgreSQL 交互?

通过 SSH 隧道与远程服务器上的 PostgreSQL 交互?

我已在我的 Web 服务器上设置了用户 A,并将其公共 SSH 密钥复制到用户 B 的~/.ssh/authorized_keys在我的数据库服务器上。这个想法是使用 SSH 隧道来促进我的 Web 应用程序和远程数据库之间的通信。我用它来ufw锁定除 ssh 连接和端口之外的所有内容5432PostgreSQL 用于本地连接:

ufw default deny
ufw allow ssh/tcp
ufw allow 5432/tcp
ufw enable

这是我用来打开 SSH 隧道(通过 Web 服务器)的命令:

ssh -L 63333:localhost:5432 [email protected]

跑步netstat -lpnt | grep 63333 | grep ssh在我的 Web 服务器上运行上述命令后,得到以下结果:

tcp      0     0 127.0.0.1:63333       0.0.0.0:*       LISTEN      22560/ssh
tcp6     0     0 ::1:63333             :::*            LISTEN      22560/ssh

接下来我尝试连接到端口上的数据库服务器63333验证一切是否正常:

psql -h localhost -p 63333 userb

我遇到了以下错误信息:

-bash:/usr/bin/psql:没有此文件或目录

这里我是否遗漏了一些明显的东西?我只在数据库服务器上安装了 PostgreSQL。据我了解,一旦隧道到位并给出正确的参数,我是否应该可以访问交互式终端 (psql)?

答案1

哎呀!我的 SSH 隧道连接正常。您需要在建立远程连接的服务器上安装客户端,以便与 PostgreSQL 通信。

就我的情况来说,这是我的网络服务器上的一行代码:

sudo apt-get install postgresql-client-9.3

相关内容