conexão ssh muito lenta

18

Eu tenho vários sistemas remotos, e um deles, um linode executando o debian, é muito lento para ssh - leva aproximadamente 20-25 segundos a cada vez. Isso parece ter acontecido relativamente recentemente. Tentei definir GSSAPIAuthenticationcomo noou yessugerido em várias respostas para perguntas semelhantes, e isso não faz diferença. Também não faz diferença se eu fizer login usando o fqdn ou o endereço IP. Eu tenho o mesmo atraso sshing da minha caixa Linux local ou do meu Macintosh local. Eu não tenho esse atraso sshing do linode para a caixa linux local. Eu tenho outro sistema remoto usando a mesma versão do Debian e posso usá-lo em 2 segundos. A única diferença entre os/etc/ssh/sshd_config arquivos nas duas caixas Debian é que a mais rápida não permite senhas e também especifica uma lista de cifras permitidas.

Se eu entrar usando ssh -vvv root@linode, o atraso ocorrerá na parte marcada com >>>>>>

debug2: key: /root/.ssh/id_ecdsa ((nil))
debug2: key: /root/.ssh/id_ed25519 ((nil))
debug3: send packet: type 5
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50

>>>>>>

debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /root/.ssh/id_rsa
debug3: send_pubkey_test

(Este é apenas um registro parcial - registro completo disponível mediante solicitação)

Não consigo encontrar nada sobre o login no /var/log/auth.logou /var/log/syslogdurante o tempo de atraso - depois, apenas recebo

Jul 27 13:46:43 linode sshd[23049]: Accepted publickey for root from 199.241.27.237 port 51464 ssh2: RSA 89:08:ef:44:48:a4:84:b7:0a:de:14:65:1b:d9:86:f8
Jul 27 13:46:43 linode sshd[23049]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 27 13:46:43 linode systemd-logind[3235]: New session 10361 of user root.
Paul Tomblin
fonte

Respostas:

25

Se a criação da conexão for lenta, mas for a velocidade normal após a criação, é muito provável que o servidor esteja fazendo uma pesquisa DNS reversa para o cliente e que, por algum motivo, falhe.

Em geral, ao depurar isso, você também pode tentar fazer login a partir de dois terminais. Com o primeiro login, observe o sshdlog no servidor, enquanto você tenta logar a partir do segundo. Isso fornece mais informações sobre o que o servidor está fazendo (ou aguardando).

Você pode tentar encontrar uma prova disso, pois a causa é a pesquisa reversa de DNS, definindo um ou ambos dos seguintes itens em /etc/ssh/sshd_config:

UseDNS no
UsePAM no

e veja se isso acelera a criação da conexão. Se isso acontecer, você pode deixar as coisas assim até que seja resolvido (se você se importa com isso).

Se esse for um problema de pesquisa de DNS reverso, isso depende do servidor DNS em que a máquina na qual você faz login. Segundo a Wikipedia, nem todos os endereços IP têm uma entrada reversa, pois esse não é um requisito de padrões real. Mas é mais provável que isso seja algum problema de configuração.

Anthon
fonte
Meu novo ISP (fibra de 1000Mbps em casa!) Não possui uma entrada rDNS para o meu IP. Então UseDNS noresolvemos o problema o máximo possível.
Paul Tomblin
2
Adicionar o UseDNS não funcionou para mim.
Jose 'Vargas
Tentei tudo isso, sem dados. Eventualmente, apenas reiniciei o cliente e tudo estava bem.
medley56
Isso foi muito útil ... descobriu que o DNS do servidor estava configurado incorretamente. Correção que corrigia as conexões ssh lentas.
TemporalWolf
Adicionar UseDNS = no e reiniciar o sshd funcionaram para mim. CentOS 7.
pzy
-2

Nos sistemas Debian / Ubuntu, o truque é expulsar o "avahi-daemon" do sistema e o problema desaparece.

apt-get -y purge avahi*
TRANCEMANIAC
fonte
2
Não é uma boa ideia colocar -yo comando de limpeza, o usuário deve revisar a ação antes da execução.
Rabin