Linux – Conexão SSH lenta no login

Recentemente tentando acessar um servidor novo, percebi uma lentidão para conectar via SSH. Vamos ao caso:

1) Servidor era novo, a versão do openssh-server não era a mais recente no caso 6.5 mas uma que uso em vários servidores sem problema.
2) Latência da conexão baixa, depois de várias requisições ICMP tive um resultado como min/avg/max/mdev = 0.368/0.627/0.706/0.200 ms, então minha rede não era.
3) Em termos de hardware do servidor sem comentários, estava tranquilo. Por vias duvidas até acompanhei algumas coisas monitorando mas, sem problemas.
4) Firewall? Não. Pois com as regras ativas ou limpas era mesma coisa.

Agora as etapas que segui para resolver o problema:

E como a alguns anos eu tive um problema parecido o que eu fiz, no caso desabilitei ou comentar o seguinte parâmetro no /etc/ssh/sshd_config.

ou

Ou ainda pode passar direto em linha de comando:

E mesmo assim nada, não era esse o problema. Então resolvi dar uma investigada no log do Linux, e para ajudar habilitei o DEBUG no /etc/ssh/sshd_config.

Modo VERBOSE também ajuda, para entender as opções pode usar o man sshd_config. E não consegui abstrair nada que poderia ser este o problema, ou seja solicitava o usuário eu informava e demora alguns minutos para solicitar senha, e no /var/log/auth.log e nada estranho era reportado.
Testei varias configurações dos parâmetros que eu conhecia, os que alterei voltei para o padrão e nada, até que ae tive que apelar, como no meu TCC usei bastante ltrace, strace e ‘N’ ferramentas para debugar aplicações e resolver problemas me recordo de ser possível fazer o mesmo baseado em um PID de processo rodando, então vamos lá.
Existem diversas combinações para trabalhar com ltrace e strace, no meu caso queria capturar todas as System Calls então strace era perfeito, a sintaxe abaixo me atendeu muito bem e qualquer duvida o man strace vai exibir todas as combinações possíveis, agora vamos as etapas para isso.

Primeiro encontrar o PID do processo SSH Daemon que esta rodando.

Ok, o importante dessas informações é a segunda coluna da linha /usr/sbin/sshd -D, no caso o PID (31184).
E agora chamando o strace e passando o PID no parâmetro -p.

Beleza, ae fui no terminal do outro computador e conectei, notei que ficou preso em uma etapa e logo prosseguiu, e não consegui ver, então com mais um parâmetro joguei toda a saída em um arquivo.

Tinha me recordado de ter visto meu IP e a string ADDRESS, para não pesquisar no arquivo /tmp/strace_sshd.log inteiro que gerou 38631 linhas acabei dando um cat filtrando o que me interessava e cheguei na informação a seguir.

E esse RESOLVE-ADDRESS me chamou atenção, pois se estou em uma rede interna e este servidor nem internet irá utilizar, já pensei no sentido de DNS, e fui dar uma garimpada no help do sshd, no caso man sshd_config e vi algo curioso.

Abrindo o help e lendo a informação, ele esta tentando ler o hostname do IP remoto, ele tem um tempo de timeout e caso não conseguir prossegue, esta opção por default vem setada com “yes” e no caso basta setar como “no” em /etc/ssh/sshd_config ficando assim:

Reiniciei o serviço e mandei conectar, conectou na hora e sem delay na conexão.

Espero ter ajudado alguem com o mesmo problema, eu poderia apenas informar para inserir UseDNS no no /etc/ssh/sshd_config, mas acho legal compartilhar como cheguei na solução do problema.

Até a próxima!

Share Button

CC BY-NC-SA 4.0 Linux – Conexão SSH lenta no login by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.