在这种情况下,是否可以通过 SSH 转发端口?

在这种情况下,是否可以通过 SSH 转发端口?

描述

我在实验室网络中的互联网上有一个 PostgreSQL 服务器。目前我使用 ssh 连接到它。但是我想让本地网络上的 Adminer docker 连接到该服务器。是否可以创建端口重定向,以便 docker 可以连接到本地计算机上的端口,然后重定向到 PostgreSQL 服务?

我相信这个 ssh 命令可能有效但不确定,我也想简单解释一下它是如何工作的: ssh -L 5000:myserverdomain:5432 postgresql@myserverdomain

图表

表示场景的小图表: 在此处输入图片描述

答案1

您显示的命令将使 myserverdomain 的端口 5432 在运行该命令的机器上的端口 5000 上可用。

它应该可以工作,但是(如果我没记错的话)由于您在主机上运行命令而不是在 Docker 容器上运行命令,因此默认情况下 Adminer 容器将无法访问主机上的端口 5000(通过桥接网络运行的 Docker 容器无法访问主机的端口)。因此,您可以在容器上运行 ssh 命令(我做了一个执行 ssh 端口转发),或者只使用网络“主机”运行 Adminer 容器。

最后,您可能希望在 SSH 命令上使用修饰符 -N 来避免打开交互式会话,而只需运行端口转发即可。如果连接断开,您甚至可以使用 autossh 重新连接。

答案2

这将启动与 myserverdomain 的连接,并将 localhost(再次是 myserverdomain)端口 5000 上的所有内容转发到 myserverdomain(localhost)上的端口 5432。

因此,本质上您正在将流量从 localhost 5000 转发到 localhost 5432  

ssh -L 5000:myserverdomain:5432 postgresql@myserverdomain

相关内容