我在某些主机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,因此
用于输入密码等的终端。