Acelerando conexões SSH

dilbert_21072012_networking

Com alguma frequência nos deparamos com conexões SSH que demoram bem mais que o esperado na autenticação. Boa parte das vezes isto acontece em uma VM que criamos localmente, ou em uma instância que criamos na nuvem. Isto quase sempre se deve a 2 motivos do lado do servidor SSH:

No caso do DNS reverso, o servidor tenta fazer um lookup DNS do cliente a partir do IP, mas ele não consegue obter a informação por se tratar de uma conexão com IP de saída dinâmico que não é gerenciado estritamente por nenhum servidor DNS. Com isso ele não consegue fazer a consulta e precisamos esperar até dar timeout.

No caso da autenticação GSSAPI, ela provavelmente não foi configurada por você ou por nenhum sysadmin, e a tentativa de usá-la aumenta bastante a demora para estabelecer a conexão.

Para desabilitar as 2 verificações e ter logins SSH bem rápidos, edite o arquivo /etc/ssh/sshd_config e procure pelas opções de DNS e GSSAPI, deixando-as conforme abaixo:

Reinicie o serviço ssh e as conexões já devem ser quase instantâneas.

  • Madson Cardoso

    Obrigado Bruno! Foi muito útil pra mim esse post! No meu caso arquivo sshd_config não tinha a opção UseDNS configurada em duas versões diferentes do Ubuntu, aparentemente ela apenas não vem no arquivo default, é isso mesmo?

    • blpsilva

      Fala Madson, isto varia de acordo com a distribuição mesmo. No Ubuntu desktop acho que não vem por default, no Ubuntu server já não lembro. No CentOS/Red Hat/Amazon Linux vem as 2 propriedades por padrão, e configuradas com os valores “errados”.

      Por via das dúvidas o ideal é configurar as 2 como coloquei 🙂

  • aldrinleal

    Bruno,

    O meu .ssh/options é mais ou menos assim:

    UseDNS no
    GSSAPIAuthentication no
    StrictHostKeyChecking false
    KnownHostsFile /dev/null
    ServerAliveInterval 30

    A terceira e quarta linha são pra deixar de usar o authorized_keys, e a última é mais sacana: Como o Firewall do EC2 é Stateful, ele pode cortar a conexão se a mesma ficar ociosa. A última linha manda pacotes de keepalive periódicos (tem esta opção no putty também)

    • Bruno Almeida

      Oi Aldrinleal,

      Sobre as configurações que indicou, a parte de “StrictHostKeyChecking false” está incorreta, o correto é “StrictHostKeyChecking no”, com isso não será mais útil sua linha de “KnownHostsFile /dev/null”, significa que com a opção “no” ele irá gravar o histórico de hosts porém não irá lhe questionar e irá substituir a entrada caso já exista alguma do mesmo IP ou endereço porém inválida. As demais configurações são realmente válidas.

21