Como fornecer “reverse ssh” para um shell?

1

Cenário:

Muitos dispositivos incorporados (executando o Linux) nos campos, atrás de roteadores, assim, 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.

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 nos dois lados ou no servidor de ponto de encontro, se necessário, mas, obviamente, se houver aplicativos disponíveis, não precisamos mais escrever coisas, ainda melhor.

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

    
por The Archetypal Paul 03.08.2012 / 11:52

1 resposta

0

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

Após a conexão ssh ser 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 ssh e veja as bandeiras -L e -R . Eu acho que você quer usar -R . Observe a opção bind address e requisito para GatewayPorts a ser ativada. Veja a seção TCP FORWARDING para um exemplo. Se você precisar de scripts adicionais no dispositivo incorporado, consulte também a opção de configuração -f e ExitOnForwardFailure .

    
por 19.08.2015 / 09:32