我在某些主机pgserver上运行PostgreSQL服务器。此服务器未向外界开放(仅允许localhost进行连接)。我可以通过ssh(使用公共(public)密钥)以user登录到该主机:

me@local:~ $ ssh user@pgserver

然后,我可以su到特定的用户pguser来运行查询。
user@pgserver:~ $ sudo su pguser
pguser@pgserver:~ $ psql

我需要在此处输入user的sudo-password。我无法使用pguser进行连接,也不知道他的密码。我也没有以user的身份访问数据库。

现在,为了简化开发,我想从本地计算机到pgserver设置ssh-tunnel:
me@local:~ $ ssh -L localhost:5432:localhost:5432 user@pgserver

问题是,尽管user可以访问服务器,但他没有数据库。 pguser拥有它,但是无权访问服务器。令人沮丧的是,实际上我可以将sudo链接到pguser的帐户并在以user身份连接后运行查询。

我能以某种方式解决这个问题吗?

最佳答案

尝试
ssh -t -l user pgserver sudo -u pguser psql
-t强制ssh在另一端分配pty,因此
用于输入密码等的终端。

10-07 17:51