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?
Respostas:
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 *.
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.
Se você estiver no Windows, precisará fazer referência à documentação do seu cliente.
fonte
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
ClientAliveInterval
em/etc/ssh/sshd_config
no servidor ouServerAliveInterval
no~/.ssh/config
no 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.
fonte