Docker 中的 SSH 端口转发

SSH port forwarding in Docker

我有这两个容器,比如 backend (CentOs) 和 mongo。我想要的是,从 backend 容器中,我可以连接到 mongo 数据库,就好像它是本地的 运行,$> mongo localhost:27017

无论如何,据我了解,您可以像这样将端口 localhost:27017 映射到 mongo:27017

$backend> ssh -L 27017:mongo:27017 root@mongo

但是,如果我这样做,我必须提供 root 密码,然后它会让我登录到 mongo 容器并且没有端口转发发生

背景:我想这样做是因为我是 运行 一个连接到本地主机上的 Mongo 数据库的 Java 程序,我无法更改它。

我找到了正确的 SSH 端口转发命令

$> ssh root@mongo -L 27017:localhost:27017 -Nf

通常,此命令的想法是映射一个非 public 端口 - 通过 public 服务器映射到您拥有的 server/compute。

* `root@mongo` - the public server
* -L <port on your server>:<third server address>:<port>
* `-Nf` - Do not login

因为 public serverthird server 相同 computer/container 你必须使用 localhost :)