itasahobby Asked: 2020-04-02 14:49:30 +0800 CST2020-04-02 14:49:30 +0800 CST 2020-04-02 14:49:30 +0800 CST 在这种情况下是否可以通过 SSH 转发端口? 772 描述 我在实验室网络中有一个跨互联网的 PostgreSQL 服务器。目前我正在使用 ssh 连接到它。但是我想在我的本地网络上有一个管理员泊坞窗连接到服务器。是否可以创建一个端口重定向,以便 docker 可以连接到我本地计算机上的一个端口,将我重定向到 PostgreSQL 服务? 我相信这个 ssh 命令可能有效但不确定,我还想简要解释一下它是如何工作的: ssh -L 5000:myserverdomain:5432 postgresql@myserverdomain 图表 代表场景的小图: ssh port-forwarding 2 个回答 Voted Best Answer David Lor 2020-04-21T09:53:17+08:002020-04-21T09:53:17+08:00 您显示的命令将使 myserverdomain 的端口 5432 在您运行命令的机器上的端口 5000 上可用。 它应该可以工作,但是(如果我是正确的)由于您是在主机上而不是在 Docker 容器上运行命令,默认情况下,Adminer 容器将无法访问主机上的端口 5000(Docker通过桥接网络运行的容器无法到达主机的端口)。因此,您可以在容器上运行 ssh 命令(我制作了一个执行 ssh 端口转发的命令),或者只使用网络“主机”运行 Adminer 容器。 最后,您可能希望在 SSH 命令上使用修饰符 -N 以避免打开交互式会话,而只需运行端口转发。如果连接断开,您甚至可以使用 autossh 重新连接。 Aviv Lo 2020-04-21T09:32:44+08:002020-04-21T09:32:44+08:00 这将启动到 myserverdomain 的连接,并将 localhost(又是 myserverdomain)端口 5000 上的所有内容转发到 myserverdomain (localhost) 上的端口 5432。 所以本质上你正在将流量从 localhost 5000 转发到 localhost 5432 ssh -L 5000:myserverdomain:5432 postgresql@myserverdomain
您显示的命令将使 myserverdomain 的端口 5432 在您运行命令的机器上的端口 5000 上可用。
它应该可以工作,但是(如果我是正确的)由于您是在主机上而不是在 Docker 容器上运行命令,默认情况下,Adminer 容器将无法访问主机上的端口 5000(Docker通过桥接网络运行的容器无法到达主机的端口)。因此,您可以在容器上运行 ssh 命令(我制作了一个执行 ssh 端口转发的命令),或者只使用网络“主机”运行 Adminer 容器。
最后,您可能希望在 SSH 命令上使用修饰符 -N 以避免打开交互式会话,而只需运行端口转发。如果连接断开,您甚至可以使用 autossh 重新连接。
这将启动到 myserverdomain 的连接,并将 localhost(又是 myserverdomain)端口 5000 上的所有内容转发到 myserverdomain (localhost) 上的端口 5432。
所以本质上你正在将流量从 localhost 5000 转发到 localhost 5432