Como acelerar meu login ssh muito lento?


42

Correr ssh user@hostnameleva ~ 30s. Aqui está o cenário:

  • esta é uma VM na LAN local
  • Máquinas Windows e Mac obtêm login instantâneo
  • estou usando o Debian e eu poderia me reproduzir com uma máquina Ubuntu
  • alguém usando o Ubuntu diz que fazer login na minha máquina (LAN local) também é instantâneo
  • o uso do endereço IP do nome do host leva cerca da metade do tempo (~ 15s)

[ atualização ]

Usando ssh -vvv user@hostname, aqui é onde espera mais:

debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic

E então espera um pouco aqui:

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

1
você usa autenticação por senha ou pubkey? e se senha, o arquivo a id_dsaou está id_rsano seu ~/.ssh? talvez sua instalação ssh tenta a autenticação errado em primeiro lugar e seu servidor não nega, mas simplesmente ignorar essa solicitação, resultando em que 30s tempo limite
— Tobias KIENZLER

@tobias Eu uso senha e não tenho "~/.ssh"arquivo. Esse é um diretório e só possui "known_hosts"arquivos.
— tshepang 10/01

5
Parece que você tem um tempo limite de DNS de 15 anos. Talvez o servidor esteja fazendo uma pesquisa de DNS; se puder, verifique se está UseDNS nono sshd_configservidor. De qualquer forma, execute ssh -vvv user@hostnamepara ver onde o logon está suspenso.
— Gilles 'pare de ser mau'

@gil Obrigado. Eu atualizei a pergunta. Vou pedir ao administrador para verificar essa configuração do UseDNS .
— tshepang

3
@Tshepang: Ah, você está usando a autenticação Kerberos (GSSAPI). Eu não estou familiarizado com isso. Se estiver mal configurado, talvez esteja causando o atraso. Isso é algo que você pode perguntar ao seu administrador. DNS pode ser um arenque vermelho; é a causa mais comum na natureza, mas talvez o seu problema seja diferente.
— Gilles 'SO- stop be evil'

Respostas:


32

Edite seu " / etc / ssh / ssh_config " e comente estas linhas:

GSSAPIAuthentication yes
GSSAPIDelegateCredentials no

3
+1 Boa resposta! (1) É uma velocidade normal para a conexão de login ssh levar o tempo que o cursor pisca 7 vezes? (2) Por que funciona comentando GSSAPIAuthentication yese GSSAPIDelegateCredentials no? @Tshepang
— Tim

@ Tim (1) é muito longo ... dependendo da conexão, não espero que demore mais de 2 segundos; (2) Eu não tenho idéia, só que ele funciona
— tshepang

1
O padrão para GSSAPIAuthentication na maioria das versões do OpenSSH é "não", mas algumas distribuições o definem como "yes" nos arquivos sshd_config e ssh_config. Se você não precisar / usá-lo, isso diminui a velocidade do handshake de conexão / autenticação.
— tgharold

Se a autenticação LDAP / AD estiver em uso, a desativação do GSSAPI não fará com que uma ligação simples seja usada, potencialmente enviando senhas pela rede em texto sem formatação?
— Shannon

Verifique se todos os servidores de nomes ainda existem no /etc/resolv.conf. Se não, tire-os. Isso resolveu meu problema.
— technocrat

30

Eu tive esse problema e resolvi-o desativando a resolução de DNS reverso no SSH.

Então, sshd_configno servidor, mude isso:

 #UseDNS yes

para isso:

UseDNS no

1
Fiz a alteração (apesar de não ter a opção UseDNS comentada ), redefini meu servidor ssh e ainda o mesmo problema.
— tshepang

2
@ Hmm, estranho. Os únicos problemas de velocidade que já tive com o SSH foram devido a isso.
— Earlz 22/01

1
Fiquei cético ao usar o endereço IP (LAN local), mas essa solução corrigiu meu problema. Pelo bem do Google, embora estivesse ocorrendo logo após, o atraso não teve nada a ver com a mensagem "key: /home/mylogin/.ssh/id_ecdsa ((nil))" (em execução ssh -vvv).
— Skippy le Grand Gourou

7

Você verificou sua configuração de DNS?

Experimente a definição mdns offem /etc/host.conf.

Isso desativa a resolução mdns e me ajudou muito.

EDITAR:

Parece que o gentoo está lidando com isso um pouco diferente. Para desativar as pesquisas DNS multicast, é necessário alterar o arquivo /etc/nsswitch.conf.
Deve haver algo como:

hosts:          files mdns

Altere para:

hosts:          files dns

+1 de boa ideia. @Tshepang o ssh se conecta mais rápido quando você usa o IP do nome do host diretamente?
— Tobias Kienzler 10/01

@tobias leva metade do tempo
— tshepang

Estou tirando /etc/host.conf: line 2: bad command mdns '' quando corro ssh user@hostname.
— tshepang

Parece que esta é uma configuração desatualizada, desde glibc 2.3.x (2006): forums.gentoo.org/viewtopic-t-476558-highlight-mdns.html . O que você está usando (SO, versão glic)?
— tshepang

1
Você está dizendo que leva apenas metade do tempo quando você usa o endereço IP. Isso significa que você tem um problema com sua resolução de nome (IP => FQDN ou FQDN => IP). Então, primeiro dê uma olhada na sua configuração de DNS e tente descobrir se você tem algum problema com ssh ou não.
— Christian

3

Adicionar o nome do host às /etc/hostsvezes pode resolver esse problema.


Funciona para um único nome de host, mas a solução do Earlz é mais genérica (e corrige o mesmo problema).
— Skippy le Grand Gourou

1

Verifique também se nscdestá instalado e em execução.

Não ter um cache DNS pode aumentar o tempo necessário para resolver o registro PTR (supondo que o cliente ssh esteja executando uma pesquisa reversa de DNS para o endereço IP do servidor)


0

Eu tenho o mesmo problema no ambiente Windows 2008 R2, mas "useDNS no" não funciona.

Eu tento adicionar aos arquivos de hosts o IP e o host do servidor de conexão e é mais rápido em 30seg. O que me faz pensar que a resolução pode estar no DNS.

Eu tento adicionar servidores DNS, mas isso não resolve.

Meu servidor tem dois sufixos DNS. 1 para o domínio corporativo ao qual o servidor pertence (domain.com) e o outro para sua interface externa conectando-se a uma rede privada (domain.net).

A ordem do sufixo DNS é domain.net primeiro e depois domain.com em seguida

Meus clientes SFTP / SSH estão no domínio corporativo. A propósito, clientes problemáticos são do domínio corporativo.

O que funciona para mim é que eu faço domínio.com primeiro e depois domínio.net segundo

O atraso da conexão 2m30s antes se tornou apenas 3-4s.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.