11

我有一个在 EC2 主机上运行的 docker 容器,另一个在另一个 ec2 主机上运行。如何在不提供任何端口号的情况下从一个连接到另一个连接?我想做类似 ssh root@ip-address-of-container

4

3 回答 3

6

为了让您能够通过 ssh 连接到端口 22 上的第二个容器,您需要让主机 ec2 vm 的 ssh 守护程序不碍事。

  1. 一种方法是通过将 /etc/ssh/sshd_config 中的条目添加到类似 3022 的条目来更改主机的 ssh 端口。现在您可以在运行 docker 容器时使用 -p 22:22 并能够在他们。但是,对 ec2 实例执行 ssh 操作是在 3022 上。

  2. 如果您想在端口 22 上保持 host-vms 也启用 ssh,则需要创建第二个虚拟以太网接口。如果您能够设置静态 IP,这很容易做到。类似的东西 ifconfig eth0:0 192.168.1.11 up。但是,在 ec2 中这是不可能的,因为您有基于 DHCP 的 IP。

  3. 第三种方法是设置您的 .ssh/config 文件以映射到非标准端口。它不允许您通过端口 22 进行 ssh,但至少您不必了解非标准端口。这是一个教程,相关部分如下。

    # contents of $HOME/.ssh/config
    Host other_docker
        HostName ec2-host-name-of-other-docker.com
        Port 22000
        User some_user
    
        # must be added to authorized keys on other docker host for some_user
        IdentityFile ~/.ssh/this-docker-private-key
    

现在你可以做ssh other_docker

于 2014-11-18T15:57:02.140 回答
0

Open vswitch 是最简单的解决方案!- https://goldmann.pl/blog/2014/01/21/connecting-docker-containers-on-multiple-hosts/

于 2014-11-20T09:43:24.183 回答
-1

我还没有对此进行测试,但你也许可以ssh hostUser@xxx.xxx.xxx.xxx 'ssh containerUser@xxx.xxx.xxx.xxx'使用 ssh 的command参数来做一些事情。

于 2019-09-09T18:44:11.120 回答