使用 PgAdmin 4 设置 SSH 隧道

Posted

技术标签:

【中文标题】使用 PgAdmin 4 设置 SSH 隧道【英文标题】:Set up SSH tunnel with PgAdmin 4 【发布时间】:2021-04-13 06:49:53 【问题描述】:

我是 pgAdmin 和 SSH 隧道的新手。我正在尝试使用 SSH 隧道建立与 postgres 数据库的连接。我在 Windows 10 上。我收到以下说明(我更改了下面的所有名称和端口)

将以下内容添加到您的 SSH 配置 (~/.ssh/config):

Host prod
  Hostname myorg.org.uk
  User sshusername
  IdentityFile idef.pem
  LocalForward 9999 localforward.amazonaws.com:8888

现在您可以通过隧道进入 PostgreSQL:

ssh -N prod

现在 psql et al 可以连接了(您必须在 SSH 隧道运行时打开一个新的终端窗口):

psql -h localhost -p 9999 -U connectionusername -d dproduction

我还获得了我尝试连接的数据库的 dproduction 数据库密码:dproduction_pwd

我不明白 pgAdmin 中的一切。我做了以下事情:

创建服务器: 名称 = 测试

连接: 主机名/地址:本地主机 保护:9999 维护数据库:postgres 用户名:连接用户名

SSH 隧道: 隧道主机:myorg.org.uk 隧道站:9999 用户名:sshusername 身份文件:C:\idef.pem 密码:dproduction_pwd

我一定是做错了什么,因为我没有从上面的 ssh 配置中使用 LocalForward,这是怎么回事?将其放入 Tunnel 主机不起作用。

【问题讨论】:

【参考方案1】:

我设法使用 SSH 隧道通过 Windows 10 SSH 和 PGAdmin SSH 隧道访问我的数据库。确实需要一段时间。 pgAdmin 的文档对此不是很清楚。这是我发现的不同之处:

使用 Windows 10 SSH 设置 SSH 隧道时,您需要将本地端口(在您的情况下为 9999)转发到远程端口(8888)。

在 pgAdmin 中,不再需要该本地端口。我的猜测是因为它已经知道你想通过哪个隧道访问哪个服务,它会在后台处理本地端口。在最常见的情况下,该隧道端口应该是 SSH 端口 22。

我建议对您当前设置的更改是:

    SSH Tunnel选项卡中,将隧道端口设置为22 在Connection选项卡中,将端口设置为8888

这应该可行。

【讨论】:

以上是关于使用 PgAdmin 4 设置 SSH 隧道的主要内容,如果未能解决你的问题,请参考以下文章

pgAdmin3 通过 ssh 隧道备份

如何为 ipython 集群(ipcluster)设置 ssh 隧道

用于设置临时 SSH 隧道的 Bash 脚本

如何使用 python 打开 SSH 隧道?

使用 Paramiko 设置 SSH 隧道以访问 PostgreSQL

允许用户设置 SSH 隧道,但仅此而已