Ilustro minha pergunta com a ajuda de contêineres docker, mas esse exemplo é ortogonal ao restante do problema. Na verdade, qualquer programa que permita o uso de interfaces de ponte e ssh
seria suficiente.
Eu uso um contêiner do Docker que executa um daemon sshd
em segundo plano gerado por supervisord
, que é executado em primeiro plano. Eu uso principalmente o ssh para ter uma maneira segura de redirecionamento do X11 sem ter que ligar o /tmp/.X11-unix
ao container e expor totalmente o socket ao container. Se eu usar docker top containername
logo depois de iniciar o contêiner, recebo a seguinte saída:
UID PID PPID C STIME TTY TIME CMD
root 4732 535 1 19:56 ? 00:00:00 /usr/bin/python /usr/bin/supervisord
root 4745 4732 0 19:56 ? 00:00:00 /usr/sbin/sshd
que é como esperado. Agora, expus a porta 22 no contêiner para a porta 5000 no host. Portanto, posso fazer login no meu contêiner usando ssh -X username@localhost -p 5000
. Eu sei como ssh funciona quando cliente e host são computadores diferentes e em redes diferentes, mas eu tenho algumas perguntas quando cliente e host são um mesmo computador (no meu caso, o cliente é minha máquina normal e host é o recipiente na minha máquina normal). Eu sei que o docker configura uma ponte entre o dispositivo de rede física em minha máquina normal e o dispositivo de rede virtual em minha máquina.
Mas como exatamente minha máquina normal e o contêiner se comunicam uns com os outros? Eles usam os endereços IP atribuídos a eles pelo dispositivo de ponte e se comunicam por meio deles?
Como as portas envolvidas nesse processo eliminam a necessidade de usar endereços IP?
Existe uma maneira mais eficiente / recomendada de usar o ssh quando o cliente e o host estão na mesma máquina e configurados da maneira que acabei de descrever.
Extensa pesquisa na internet não revelou respostas suficientes. Dito isto, é claro que não afirmaria que tal site não existe!
Tags ssh networking sshd x11