Sobes.tech
Junior

O que fazer se a conexão SSH ficar presa?

sobes.tech IA

Resposta da IA

  1. Verificar a ligação de rede: Certifique-se de que não há problemas com a ligação à Internet ou à rede local. Fazer ping ao servidor.
  2. Verificar a carga do servidor: Pode estar sobrecarregado (CPU, RAM, I/O). Utilizar ferramentas de monitorização ou tentar aceder através da consola do hipervisor/provedor.
  3. Reiniciar o serviço SSH: No lado do servidor, se tiver acesso por outros meios (console, outro SSH).
    # para sistemas baseados em systemd
    sudo systemctl restart sshd.service
    
    # para sistemas baseados em SysV init
    sudo service ssh restart
    
  4. Verificar a configuração do servidor SSH: Ficheiro /etc/ssh/sshd_config, prestar atenção aos parâmetros ClientAliveInterval e ClientAliveCountMax.
    # /etc/ssh/sshd_config
    ClientAliveInterval 60 # enviar mensagem de vida a cada 60 segundos
    ClientAliveCountMax 3  # permitir 3 mensagens de vida perdidas
    
    Após alterar as configurações, reiniciar o serviço SSH.
  5. Verificar a configuração do cliente SSH: Ficheiro ~/.ssh/config ou opções na linha de comando (-o). Parâmetros ServerAliveInterval e ServerAliveCountMax.
    # ~/.ssh/config
    Host o_seu_alias_de_servidor
        Hostname o_seu_ip_ou_nome_de_servidor
        ServerAliveInterval 60
        ServerAliveCountMax 3
    
    Ou ao conectar:
    ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 utilizador@o_seu_ip_ou_nome_de_servidor
    
  6. Verificar firewalls: Certificar-se de que os firewalls (locais no cliente, servidor, rede) não bloqueiam ou interrompem a ligação na porta 22 (ou outra porta usada pelo SSH).
  7. Verificar TMOUT/IDLE-timeouts: Alguns terminais ou ambientes têm as suas próprias configurações de timeout de inatividade, que podem levar à desconexão. Verificar a variável TMOUT na sessão bash no servidor.
    # verificar a variável
    echo $TMOUT 
    
    # definir valor (por exemplo, 3600 segundos)
    export TMOUT=3600 
    
    Isto é uma solução temporária para a sessão atual. Para alterações permanentes, editar ficheiros .bashrc, .profile, etc.
  8. Usar a opção -v para depuração: Detalhar o processo de ligação SSH com o cliente.
    ssh -v utilizador@o_seu_ip_ou_nome_de_servidor
    
  9. Verificar os logs do SSH: No lado do servidor, /var/log/auth.log ou /var/log/secure (depende do SO).
    # ver as últimas entradas no log de autenticação
    sudo tail /var/log/auth.log
    
  10. Usar uma porta ou protocolo alternativo: Se a porta padrão 22 estiver bloqueada em algum lugar na rede, tentar usar outra porta, se estiver configurada no servidor. Ou usar outro protocolo de acesso, se possível (por exemplo, consola).