Como fornecer "reverse ssh" para um shell?

1

Cenário:

Muitos dispositivos embarcados (rodando o Linux) estão nos campos, atrás de roteadores, portanto, NAT e não podemos fazer conexões com eles.

Precisamos que uma pessoa de suporte possa iniciar uma sessão de terminal / shell em qualquer um dos dispositivos.

O terminal local também será NAT protegido por um firewall corporativo, por isso precisamos de um "ponto de encontro" central ao qual eles e o dispositivo possam se conectar.

Se necessário, poderíamos exigir que a pessoa de suporte fizesse login em algum tipo de servidor de terminal, mas eu preferiria uma solução que apenas exibisse uma janela de terminal em sua área de trabalho.

Nós podemos (através de outros meios) dizer ao dispositivo para executar algum script ou aplicativo de arbitragem para iniciar a sessão.

Sem o NAT, é apenas SSH para o dispositivo e vamos embora. Mas quais são minhas opções neste ambiente NAT?

Não há problema em desenvolver código no final ou no servidor de ponto de encontro, se necessário, mas, obviamente, se houver aplicativos lá fora, não teremos que escrever coisas, melhor ainda.

Ponteiros para outras perguntas que eu possa ter perdido (embora eu tenha olhado) ou para aplicativos que eu deveria considerar para o servidor central "ponto de encontro" bem-vindo

O Paul Arquetípico
fonte
Quantos dispositivos embarcados? Centenas? Milhares? Dezenas de milhares?
dave4420
Dezenas de milhares. Mas muito poucas sessões ssh simultâneas são necessárias - no máximo, dezenas. Isso não será necessário com frequência.
O Arquetípico Paulo

Respostas:

0

Eu sugiro abrir uma conexão SSH do dispositivo embarcado para um servidor (nós chamamos isso de SERVER) sob o seu controle e criar uma porta reversa para a porta 22 do dispositivo embarcado. Você precisa usar um número de porta não estático no SERVER porque você tem um paralelo conexões. Por exemplo, digamos que você inverta a porta 2222 do SERVIDOR de porta para uma porta 22 do dispositivo incorporado. Então você (ou pessoa de suporte) pode iniciar a conexão ssh completa com o dispositivo incorporado conectando à porta 2222 do SERVER. d ambiente. Você ainda precisa colocar o SERVER em IP público, mas até mesmo algum tipo de solução dyndns deve ser suficiente.

Depois que a conexão ssh é estabelecida, você pode parar de escutar a porta 2222 no SERVER (isto é, derrubar o encaminhamento de porta reversa). Como resultado, você precisa reservar portas de escuta no SERVER somente durante o estabelecimento de novas conexões.

Veja man sshe veja bandeiras -Le -R. Eu acho que você quer usar -R. Observe a bind addressnecessidade de a GatewayPortsopção ser ativada. Veja a seção TCP FORWARDINGpara um exemplo. Se você precisar de scripting adicional no dispositivo incorporado, ver também -fe ExitOnForwardFailureopção de configuração.

Mikko Rantalainen
fonte