Tempo limite do SSH do Linux [fechado]


10

Tenho lutado com um par de tempos limite do sistema após X minutos de inatividade e não tenho certeza de como consertá-lo.

Eu tenho uma caixa CentOS no meu escritório. Conectar-se ao SSH não pode tocá-lo por 2 horas e ainda está ativo quando executo algo.

No entanto, conecte-se à mesma caixa em casa e às vezes atingirá o tempo limite após alguns segundos, outras após alguns minutos.

Eu acho que é a minha conexão à Internet, no entanto, se eu estiver usando ativamente a caixa, ela permanecerá conectada.

No entanto, se eu parar de digitar no Google algo, ele mostrará uma mensagem desconectada e eu tenho que me reconectar.

Qualquer coisa que eu possa verificar para ver o que está acontecendo?


4
A documentação para o seu cliente (sem nome).
precisa saber é o seguinte

Respostas:


14

A primeira coisa que você deve analisar é definir o ServerAliveInterval. Isso deve ser definido na sua estação de trabalho.

Nos clientes Linux ou OSX, você pode criar um arquivo de configuração para o usuário em ~ / .ssh / config na sua estação de trabalho. Adicione a seguinte diretiva. No meu caso, quero que ele afete todos os hosts, portanto, coloque-o em Host *.

Host *
    ServerAliveInterval 60

Isso enviará uma instrução noop a cada 60 segundos para manter a conexão aberta. Você pode ajustar o valor para atender às suas necessidades.

No lado do servidor, verifique se TCPKeepAlive está definido como yes.

grep TCPKeepAlive /etc/ssh/sshd_config
TCPKeepAlive yes

Se você estiver no Windows, precisará fazer referência à documentação do seu cliente.


11

O Linux não atinge o tempo limite de conexões SSH inativas. Você pode deixar uma conexão SSH aberta indefinidamente e, desde que nenhum ponto de extremidade tenha sido reinicializado ou tenha um novo endereço IP, a conexão continuará funcionando quando você a acessar após um longo tempo inativo.

No entanto, se houver alguma caixa intermediária com estado (NAT, firewall etc.), é provável que o tempo limite das conexões ociosas seja excedido. O resultado disso é que, embora a conexão esteja ativa nas duas extremidades, os dois pontos de extremidade não podem mais se comunicar porque a caixa do meio se recusa a encaminhar quaisquer pacotes até que o cliente SSH abra uma nova conexão.

Se você sabe que o tempo limite do middlebox, você pode contornar o problema configurando ClientAliveIntervalem /etc/ssh/sshd_configno servidor ou ServerAliveIntervalno ~/.ssh/configno cliente. Para uma detecção ideal de conexões quebradas, é recomendável ativar as duas configurações. Isso também detectará conexões interrompidas quando um dos terminais tiver sido reinicializado ou obter um novo endereço IP.

Como você indica que o tempo limite às vezes parece ser tão baixo quanto alguns segundos, isso pode não ser suficiente para resolver o seu problema. Um tempo limite aparente muito baixo pode ser causado por uma CGN sobrecarregada ou mal configurada. Você precisa inspecionar o tráfego em vários pontos do caminho de comunicação para descobrir se um CGN é responsável pelas falhas.

Se as falhas forem causadas pelo seu ISP, algo bobo, como conexões de balanceamento de carga em vários CGNs que não compartilham o estado da conexão, você não poderá resolver o problema sozinho, simplesmente ajustando sua configuração SSH.

Se você estiver preso a um ISP com um CGN não confiável que eles se recusam a corrigir, as únicas opções restantes que eu conheço são atualizar as versões cliente e servidor para kernel com suporte MPTCP ou usar uma solução de encapsulamento projetada para tolerar espontaneamente mudanças nos mapeamentos de portas no NAT.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.