Por que o prompt de "senha" demora uma eternidade quando eu SSH no meu servidor Ubuntu 9.05?

27

Resposta: Realmente, estava executando a resolução DNS reversa. Com base nas sugestões abaixo e neste artigo , adicionei "UseDNS no" ao meu sshd_config, reiniciei o ssh e agora o prompt de senha é exibido imediatamente.

Quando eu SSH no meu servidor, recebo o prompt padrão "login as:", seguido pelo prompt "user @ host's password:". Por qualquer motivo, o segundo sempre leva um tempo para ser exibido. Meu servidor não está sob nenhuma carga e normalmente executa comandos muito rapidamente.

Agora, estamos conversando apenas 10 segundos ou mais entre o momento em que pressione Enter para o nome de usuário e quando o segundo prompt for exibido, mas quando você faz isso muito, fica irritante. Eu suspeito que o Ubuntu esteja procurando minha conta de usuário, mas tem <5 contas em toda a instalação.

A atualização @Josh / var / log / messages contém esta gema:

Oct 28 16:54:59 Athena sudo: pam_sm_authenticate: Called
Oct 28 16:54:59 Athena sudo: pam_sm_authenticate: username = [msmith]
Oct 28 16:54:59 Athena sudo: Warning: Using default salt value (undefined in ~/.ecryptfsrc)
Oct 28 16:55:01 Athena sudo: Passphrase key already in keyring; rc = [1]
Oct 28 16:55:02 Athena sudo: Passphrase key already in keyring; rc = [1]
Oct 28 16:55:02 Athena sudo: There is already a key in the user session keyring for the given passphrase.

Onde msmith é meu nome de usuário. O que tudo isso significa?

rcampbell
fonte
Você sabe (ou deseja aprender) como usar farejadores de pacotes como o Wireshark ou tcpdump? Isso pode dizer se o servidor está realmente usando esse tempo todo sozinho ou se está realmente se comunicando com o cliente.
Arjan #

Respostas:

17

É possível que ele esteja fazendo uma pesquisa DNS reversa no seu IP? Você pode verificar os resultados on-line se o cliente estiver usando um endereço IP público ou usar algo como o seguinte no seu servidor:

dig -x CLIENT_IP_ADDRESS

Existe alguma coisa /var/log/messages?

Josh
fonte
Eu tenho um aviso no log: Aviso: Usando o valor padrão de sal (indefinido em ~ / .ecryptfsrc). Publiquei a seção inteira na pergunta para sua análise.
Rcampbell 29/10/09
@ rrc7cz, e quanto ao DNS reverso? O seu endereço IP resolve alguma coisa? (Duvido que ajude, pois na maioria das vezes são necessários alguns apertos de mão para decidir se um prompt para o nome de usuário deve ser exibido. Um teste rápido usando o Wireshark no meu Mac mostra que o SSH é iniciado muito antes de o nome do usuário ser solicitado. mas talvez ? alguns clientes pedem que o nome do usuário antes mesmo tentando conectar ...)
Arjan
3
Eu tive esse problema de pesquisa de DNS reverso, abrandando minhas conexões ssh em algumas instalações ... Se você achar este o caso, comente a linha "UseDNS yes" em / etc / ssh / sshd_config e reinicie o sshd.
John Barrett
@ john, você se lembra se isso diminuiu a velocidade depois de digitar o nome de usuário?
Arjan
1
"UseDNS no" também me ajudou! UpVotes para perguntas e respostas!
Grizly 17/10/12
14

Provavelmente a resolução DNS reversa (servidor tentando obter o nome do cliente com o IP) está demorando. Você pode verificar se / etc / ssh / sshd_config possui a configuração "VerifyReverseMapping yes"? Defina como "VerifyReverseMapping no" e verifique se ajuda.

Edit: Parece que VerifyReverseMapping agora está obsoleto e useDNS é a nova configuração no sshd_config .

secureBadshah
fonte
Pode ser verdade, mas faz sentido que o prompt de nome de usuário seja exibido imediatamente, após o que leva 10 segundos para ser solicitada a senha?
Arjan #
O cliente pode resolver o nome do servidor e enviar uma solicitação, é por isso que o prompt do usuário é mostrado imediatamente. Mas o servidor tenta obter o nome do cliente (resolução DNS reversa). Isso pode expirar se a dose de entrada não existir. A configuração "VerifyReverseMapping" no sshd-config controla essa verificação.
SecureBadshah 30/10/09
1
Essa foi a razão da lentidão no meu caso, portanto, pelo menos em alguns casos, faz sentido. Mente-lhe que o padrão é yes, por isso não basta pesquisar se useDNSé jogo :)
Nanne
3

Você sempre pode fazer login com o nome de usuário para começar:

ssh user@server

Isso tem algum efeito?

Se você estiver usando o PuTTY, é configurável em Conexão -> Dados como nome de usuário de login automático.

John T
fonte
1
Embora isso obviamente não acelere o tempo necessário para que o prompt de senha apareça, ele definitivamente acelera o processo geral de login. Graças
rcampbell
3

Se você não tiver nomes de domínio adequados para tudo, invente algo e coloque-o /etc/hosts. Veja se isso vai mais rápido ... não se preocupe em .comusar apenas "bob, carol, ted, alice" ou o que quiser ...

Se o problema for o tempo limite do resolvedor, será corrigido.

DigitalRoss
fonte
1

Lembre-se de que o cliente também fará a verificação de DNS reverso, que pode levar 30 segundos ou mais para atingir o tempo limite, se o mapeamento de DNS reverso não existir com determinadas configurações de resolução.

Em um /etc/ssh/ssh_configou em um ~/.ssh/configconjunto CheckHostIP nopara desativar essa pesquisa do lado do cliente.

Veja man 5 ssh_configpara mais detalhes.

tylerl
fonte
1

Encontrei uma solução alternativa para esse problema: - http://www.patrickmin.com/linux/tip.php?name=ssh_pause

Eu estava tendo o mesmo problema ao fazer login em uma máquina de compilação linux usando o Putty no Windows. Adicionar o endereço IP da minha caixa de janelas ao / etc / hosts na máquina linux resolveu o problema.

Rob Belcham
fonte
3
Bem-vindo ao Superusuário - Geralmente, preferimos que você inclua detalhes e não apenas links. Você poderia editar sua resposta para adicionar mais informações a partir do link?
Simon Sheehan
1

Só para constar, experimentei o mesmo problema em que o ssh seria rápido de casa para o meu servidor doméstico (principalmente para o git), mas levaria de 10 a 20 segundos no trabalho para obter uma solicitação da senha.

Eu tive que desligar UseDNS noe reiniciar sshd sudo systemctl restart sshd.service. Depois, ele funciona em todos os locais.

Eu sei que a pergunta foi respondida e aceita, mas eu queria adicionar as informações, pois tinha que "ativamente" configurá-las como não para que parasse de usar o DNS.

qrikko
fonte
0

Verifique se o nslcd (daemon LDAP) está em execução:

ps -ef | grep nslcd

Isso pode causar esse problema.

Se estiver em execução, pare e remova da lista de serviços

service nslcd stop
chkconfig nslcd off
Anu V Das
fonte