当前位置: 首页 > 知识库问答 >
问题:

Postgres通过ssh连接

赫连捷
2023-03-14

我在某个主机pgserver上运行PostgreSQL服务器。此服务器不对外开放(只允许来自localhost的连接)。我可以通过ssh(使用公钥)以user身份登录该主机:

me@local:~ $ ssh user@pgserver

然后我可以su对特定用户pguser运行查询。

user@pgserver:~ $ sudo su pguser
pguser@pgserver:~ $ psql

我需要在这里输入用户的sudo密码。我无法以用户身份连接,也不知道他的密码。我也不能作为用户访问数据库。

现在为了简化开发,我想设置从本地机器到pgserver的ssh隧道:

me@local:~ $ ssh -L localhost:5432:localhost:5432 user@pgserver

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

我能用某种方法解决这个问题吗?


共有1个答案

姚凯歌
2023-03-14

尝试

ssh-t-l用户pgserver sudo-u pguser psql

-t强制ssh在另一端分配一个pty,因此有一个用于密码输入等的终端。

 类似资料:
  • 有谁能帮我找到这个命令吗?命令是 如果我错了,请纠正我,但正如我所看到的,这将压缩当前目录中的文件,同时它将其复制到目标位置,对吗?这是否意味着当前文件将是完整的(不会被压缩)?

  • 问题内容: 我已经在两个服务器 A 和 B 之间建立了SSH隧道。 B 有MySQL服务器,这可行: 虽然这不是: 尽管my.cnf具有以下几行: 现在关于隧道。它连接以下内容: 但是当(在 A上 ,端口转发)时,我会 我懂了 当我这样做 我懂了 可能是什么原因?我究竟做错了什么? 问题答案: 这里有三个问题。 1-暂时忘记SSH隧道 您不能将MySQL绑定到多个特定IP。第一个子句被第二个子句覆

  • 问题内容: 我想创建以下基础结构流: 使用Docker如何实现? 问题答案: 首先,您需要在要ssh- in的映像中安装SSH服务器。您可以对安装了ssh服务器的所有容器使用基础映像。然后,您只需要运行每个容器,即可将ssh端口(默认为22)映射到主机端口(镜像中的远程服务器)到一个端口。即: 然后,如果可以从外部访问主机的端口52022和53022,则可以使用主机的ip(远程服务器)通过ssh在

  • 我需要通过ssh连接连接到Mysql RDS DB,我尝试过的是打开一个ssh隧道,然后连接到那个DB,但是没有工作。 下面是我的代码: 上述代码崩溃,但有以下例外情况,并在“con=drivermanager.getconnection(dburl,dbuserName,dbpassword);”行中崩溃: 请注意,ssh主机ip与db主机ip不同 多谢了。

  • 问题内容: 我的django项目无法连接到postgres数据库容器。我该怎么办? 它在命令时崩溃。我知道docker run命令会创建一个新的容器,但是在docker-compose.yml中,bash包含了更多命令。它应该工作,不是吗? 我的: 我的: : 输出: 我使用:Windows 10 Docker 17.03.0-ce-win1-(10296)docker-compose版本1.11

  • 我有两台机器:machine foo()运行redis服务器,而machine bar()运行通过Jedis连接到foo的java应用程序。当给jedis提供地址时,一切都很好。 但是我不信任foo和bar之间的路由器,redis也不支持SSL。因此,我设置了一个从bar到foo:的ssh隧道 现在,从bar中,我可以直接在或通过隧道在成功地telnet到foo上的redis。对于jedis,如果