我有一个在EC2主机上运行的docker容器,另一个在另一个ec2主机上运行。如何在不提供任何端口号的情况下从一个ssh到另一个?我想做点什么 ssh root @ ip-address-of-container
答案 0 :(得分:6)
为了能够在端口22上ssh到第二个容器,你需要让主机ec2 vm的ssh守护进程不受影响。
一种方法是通过添加条目来更改主机的ssh端口 在/ etc / ssh / sshd_config中类似于3022.现在你可以使用-p 22:22当你运行你的docker容器并且能够ssh 它们之间。但是,ssh的ec2实例是在3022年。
如果你想保持host-vms也在端口22上启用ssh你
然后需要创建第二个虚拟以太网接口。这个
如果您能够设置静态IP,则很容易做到。就像是
ifconfig eth0:0 192.168.1.11 up
。然而,在ec2中,这不会是
因为你有基于DHCP的IP可能。
第三种方法是将.ssh / config文件设置为映射到非标准端口。它不允许您通过端口22进行ssh,但至少您不必了解非标准端口。这是一个tutorial,相关部分如下。
# 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
答案 1 :(得分:0)
打开vswitch是最简单的解决方案! - https://goldmann.pl/blog/2014/01/21/connecting-docker-containers-on-multiple-hosts/
答案 2 :(得分:0)
我尚未对此进行测试,但是您可以使用ssh的ssh hostUser@xxx.xxx.xxx.xxx 'ssh containerUser@xxx.xxx.xxx.xxx'
参数来进行类似command
的操作。