我有一个运行在主机 pgserver
上的PostgreSQL服务器。这个服务器没有对外开放(只允许从 localhost
连接)。我可以通过ssh登录到该主机,使用公钥验证身份,用户名为 user
:
me@local:~ $ ssh user@pgserver
然后我可以使用su
命令切换到特定用户pguser
来运行查询。
user@pgserver:~ $ sudo su pguser
pguser@pgserver:~ $ psql
我需要在这里输入
用户
的sudo密码。我不能作为pguser
连接,并且不知道他的密码。我也没有作为用户
访问数据库的权限。现在,为了简化开发,我想从我的本地机器设置ssh隧道到
pgserver
:me@local:~ $ ssh -L localhost:5432:localhost:5432 user@pgserver
问题在于虽然
user
可以访问服务器,但他无法访问数据库。pguser
可以访问数据库,但无法访问服务器。令人沮丧的是,当我连接为user
后,实际上可以使用sudo
切换到pguser
账户并运行查询。有没有办法解决这个问题呢?