SSH para o contêiner Linux de outra máquina

0

Estou tentando aprender sobre o Linux Containers e este é meu primeiro encontro com servidores, ssh e muitas outras coisas que ainda não conheço.

Eu criei cinco contêineres diferentes e autorizei as chaves para facilitar o acesso entre eles. Eles possuem ip interno (10.0.3. * ). Agora o que estou tentando é conectar esses contêineres de outros computadores que estão na mesma rede. Instalei openssh-server na minha máquina para ssh access. Mas não pode se conectar ao contêiner.

Eu pesquiso sobre isso através do google, mas não consegui encontrar nenhum que funcione e não consegui entender alguns deles.

Alguém pode explicar (mostre-me uma maneira), assumindo que eu sou um novato que sou, como 'ssh' meus recipientes de outras máquinas?

Se houver alguma informação adicional que eu precise dar, eu saberei o mais cedo possível. Agradecemos antecipadamente.

EDITAR:

Quando os computadores ssh uns aos outros, eles usam eth0 ou eth1. Quando o computador (no qual os contêineres estão) tenta se conectar aos contêineres, ele usa o loopback. Agora vamos supor que temos dois computadores diferentes, comp1 e comp2, que estão na mesma rede um modem cisco que não tem conexão com a internet. Posso conectar de comp1 a comp2 por;

'ssh username @ comp2-ip'

Mas não consigo conectar os contêineres linux do comp2 que estão no loopback. Eu quero conectá-los tão fácil quanto eu conecto comp2. Existe um caminho?

    
por rebuked 10.03.2014 / 12:52

2 respostas

2

Duas máquinas em redes diferentes (privadas) não podem ver uma à outra, a menos que ambas tenham rotas declaradas uma para a outra. Por exemplo, se você tiver uma máquina com um endereço 10.0.3.1 e uma máscara de rede de 255.255.255.0, e outra máquina com um endereço 10.0.4.1 e a mesma máscara (classe C), eles não poderão ver um ao outro.

Eles precisam de um roteador compartilhado que ambos possam ver; tipicamente uma terceira máquina com 2 IPs, digamos 10.0.3.254 e 10.0.4.254, que tem algumas capacidades de roteamento - no Linux, fazer echo 1 > /proc/sys/net/ipv4/ip_forward será suficiente para coisas básicas.

Então você terá que declarar seu roteador como tal em cada máquina com route ou ip route , na máquina 10.0.3.1:

route add -net 10.0.4.0 netmask 255.255.255.0 gw 10.0.3.254

E o contrário na máquina 10.0.4.1:

route add -net 10.0.3.0 netmask 255.255.255.0 gw 10.0.4.254

Como você está usando contêineres, o host do contêiner deve agir como o roteador entre os contêineres e o mundo externo. Portanto, ative o encaminhamento de ip nele e adicione rotas adequadas nos contêineres e nas máquinas das quais deseja acessar o contêiner.

    
por 14.03.2017 / 18:44
0

Aqui estão alguns pontos para você começar:

  1. Você pode ping um contêiner do outro? Outra máquina na mesma rede?

    $ ping ip-address-of-other-container

    $ ping ip-address-of-other-machine-in-same-network

    Se não, há um problema de rede

  2. Você pode ssh localmente?

    $ ssh ip-address-of-same-container

    Se não, sshd pode não estar em execução ou há algum problema de firewall

  3. Experimente ssh -v ip-address-of-other-container

    -v fornecerá informações de depuração que podem revelar mais sobre o problema.

por 10.03.2014 / 14:18