ssh roteamento entre vários containers do sistema linux de forma transparente

1

Eu tenho o sistema onde eu corro vários contêineres. Cada container é um sistema linux com um propósito específico e cada container possui um servidor ssh habilitado. Eu quero fazer uma entidade que gerencie novas conexões ssh para a máquina host e rotear essa conexão de forma transparente para um contêiner específico (que também tem um ssh escutando) com base em um critério. Eu sei que posso rotear conexões para um container usando o ProxyCommand, por exemplo. Meu problema é que eu quero reencaminhar a conexão para outro contêiner "on the fly" com base em outros critérios, por exemplo: Se a máquina host detectou que uma conexão com o contêiner A começa a baixar um binário reencaminhar a conexão ssh de forma transparente para o contêiner B e inicie o download lá. Eu quero fazer isso de uma forma que o usuário do sistema não perceba que ele está em um contêiner e a conexão é roteamento entre contêineres diferentes enquanto ele estiver usando o sistema.

Um exemplo completo que pode ajudar a entender é: Um cliente se conecta ao ssh. Essa conexão é feita na máquina host que possui os contêineres A e B em execução. A máquina host possui um processo que redireciona essa conexão ssh de entrada para o contêiner A por padrão (ou com base em alguma condição). A máquina host continua analisando o que o cliente está fazendo no contêiner A, farejando os pacotes e verificando os comandos passados pelo cliente. Se a máquina host detectar algum comando específico, como "wget", a máquina host redirecionará a conexão ssh do contêiner A para o contêiner B de forma transparente, de forma que o cliente não perceba que o contêiner foi alterado e o download será iniciado no contêiner B.

Editar:

Estou usando o Docker e os contêineres que trocarão a conexão sempre terão o mesmo ambiente (mesmo sistema operacional e versão).

Editar 2:

Eu quero uma maneira de fazer isso com algum tipo de reencaminhamento da conexão para aplicar essa metodologia em outros casos como este exemplo: Eu tenho o host X que tem o recipiente A. Quando o cliente se conecta ao host X, a conexão ssh é reencaminhado para o host Y que está na mesma rede com um ssh de escuta. Como antes, com base em uma condição, o host X redireciona o ssh do host Y para o container A de forma transparente para o usuário.

Como posso fazer isso com roteamento, iptables ou qualquer outro método que redirecione a conexão?

Editar 3:

Basicamente eu preciso de uma maneira de redirecionar o ssh de uma máquina para outra sem uma reconexão notável. O caso mais simples é uma máquina (A) que manipula a conexão do cliente. Um cliente da Internet se conecta a essa máquina (A) que redireciona a conexão para a máquina (B) com o ProxyCommand. Só para simplificar vamos imaginar que temos um timer que depois de 5 minutos executa um script na máquina (A) que faz a mágica. O que eu quero é uma maneira que eu possa rotear esta conexão ssh da máquina (B) para a máquina (C). A parte complicada é que eu quero que essa mudança de B para C não seja percebida pelo usuário (cliente). Eu quero que o cliente não perceba que a conexão foi roteada e a máquina que ele estava inicialmente conectado mudou enquanto ele estava usando. Então, para essa "ilusão" eu imagino se existe uma maneira de manter a conexão original viva para o cliente mas direcionar a conexão na máquina (A), de B para C e quando o cliente executar o próximo comando ao invés da máquina (B) máquina (C) executará esse comando.

    
por JonLord 07.11.2018 / 06:55

0 respostas