Os túneis SSH forçam um novo túnel e matam a sessão antiga

1

Esta é a situação: Eu tenho um servidor Linux executando o servidor Ubuntu 14.04 ao qual vários computadores se conectam e se autenticam com o SSH e tentam abrir um túnel reverso. Esses computadores geralmente não têm uma conexão de internet muito estável e às vezes eles tentam se reconectar enquanto o servidor Linux ainda acha que a sessão antiga ainda está aberta. O que acontecerá então é que o computador pedirá para abrir o túnel reverso que o servidor Linux não pode fazer, porque ainda há outra sessão ligada a essa porta.

O computador aguardará cinco minutos antes de tentar novamente e tentar novamente. Enquanto isso, o servidor liberará a porta e a segunda tentativa será bem-sucedida.

Isso tudo funciona de forma semi-fina, mas o que eu gostaria é que quando uma requisição de túnel reverso chegue e a porta já esteja ocupada, o Daemon SSH irá matar a outra sessão e aceitar o novo túnel. É algo assim possível?

Se isso for possível, por razões óbvias, o daemon SSH deve liberar apenas a porta se o processo que está vinculado a ela for outra sessão SSH, mas que poderia ser corrigido de outras maneiras (como permitir que o SSHD seja encaminhado somente um determinado intervalo de portas)

Qualquer ajuda é apreciada!

P.S. números de porta dinâmicos não são uma opção.

    
por larzz11 08.03.2016 / 14:10

1 resposta

1

Então você quer que uma nova conexão de um host remoto seja capaz de chutar alguma outra conexão? Isso pode gerar alguns problemas quando um túnel reverso é usado ativamente por outro cliente.

Você pode conseguir alocar uma porta escolhida dinamicamente usando:

ssh -R 0:localhost:xxx remotehost

Outra opção é usar a diretiva ClientAliveInterval em /etc/ssh/sshd_config junto com a diretiva ClientAliveCountMax . O uso dessas diretivas permitirá que o servidor detecte que uma conexão do cliente não responde e fecha a conexão com base nos valores escolhidos. Por exemplo:

ClientAliveInterval 15
ClientAliveCountMax 3    #default value

Desconectará os clientes que não respondem após cerca de 45 segundos.

Veja man sshd_config para mais detalhes.

    
por 08.03.2016 / 15:05