ssh trava sem solicitação de senha - funciona em contas raiz ou outras

14

Eu tinha o login baseado em chave ssh funcionando bem. Em seguida, alterei o nome do host no meu computador e o login com chave parou de funcionar. Parecia fazer sentido. as chaves provavelmente se baseavam no meu antigo nome de host. Então, eu apaguei todas as minhas chaves e todos os arquivos em ~ / .ssh / e os regenerei (e alterei as chaves_estabelecidas nos servidores aos quais me conecto)

Agora, sempre que tento fazer o ssh, ele fica travado sem o prompt da senha, não importa para onde estou tentando fazer o ssh - mesmo servidores em que não tenho o login baseado em chave configurado. Não há nada no .ssh / config.

Além disso, quando eu 'su -' para fazer root, o ssh funciona perfeitamente. sem problemas. Isso acontece apenas na minha conta de usuário.

Abaixo estão algumas informações de depuração do ssh

ssh -vv [email protected]
OpenSSH_5.2p1, OpenSSL 0.9.8k 25 de março de 2009
debug1: Lendo dados de configuração /Users/myname/.ssh/config
debug1: Lendo dados de configuração / usr / etc / ssh_config
......
debug1: o host 'myremoteserver.com' é conhecido e corresponde à chave do host RSA.
debug1: chave encontrada em /Users/myname/.ssh/known_hosts:1
debug2: conjunto de bits: 512/1024
debug1: ssh_rsa_verify: assinatura correta
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS enviado
debug1: esperando SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS recebido
debug1: SSH2_MSG_SERVICE_REQUEST enviado
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT recebido

E então ele simplesmente fica aqui ...

Aqui está a saída do dtruss (como strace, mas para OSX) perto do final, onde fica: sudo dtruss ssh -vv [email protected]

select (0x4, 0x508200, 0x0, 0x0, 0x0) = 1 0
read (0x3, "$ \ 222 \ 351 {L \ 363 \ 261 \ 25063sN \ 216 \ 300 @ q7 \ 203 \ 276b \ 257 \ 354 \ 337 \ 356 \ 260! {\ 342 \ 017 \ 271 = \ 222, \ 245 \ 347t \ 006 \ 225 \ 257 \ 333; \ 204 \ 020] \ 242 \ 005z # \ 0 ", 0x2000) = 48 0
write (0x2, "debug2: service_accept: ssh-userauth \ r \ n \ 0", 0x26) = 38 0
conectar (0x4, 0xBFFFEEA2, 0x6A) = 0 0
gravação (0x4, "\ 0", 0x4) = 4 0
write (0x4, "\ v5 \ 004 \ 0", 0x1) = 1 0
read (0x4, "\ 0", 0x4) = -1 Erro nº 4

Parece estar tentando ler algo e depende disso. Se alguém tiver algumas sugestões ou idéias, ficaria muito grato!

saveraver
fonte
Eu tenho esse mesmo problema no Snow Leopard (10.6.8 com os últimos patches da Apple). Isso só acontece ao tentar se conectar aos servidores por meio de uma VPN. Uma reinicialização corrige o problema temporariamente, mas inevitavelmente volta. A pesquisa de DNS do servidor não é o problema (testado). Tem algo a ver com o estado do SSH no cliente. Matar o ssh-agent ou mudar para o root não resolve o problema.
Daniel

Respostas:

9

O motivo pelo qual seu cliente ssh trava na sua conta, mas não em outras contas (raiz), é provavelmente porque há algo errado com o seu ssh-agent. Ou o ssh-agentnão está sendo executado ou sua configuração está incorreta de alguma forma.

Para ter uma confirmação disso, tente o seguinte:

unset SSH_AUTH_SOCK
ssh [email protected]

Se você for solicitado a inserir a senha na sua ssh_key, isso significa que você tem um problema com o seu ssh-agent.

Veja também meu post sobre esta questão relacionada .

Tonin
fonte
Isso fez o trabalho para mim! No entanto, preciso fazer isso sempre que reiniciar o computador. Você conhece uma maneira de corrigir isso permanentemente?
Johan Dettmar
@JohanDettmar verifique meu post vinculado e os conselhos que ele contém. Se isso não lhe ajudar mais, provavelmente seria melhor fazer uma nova pergunta descrevendo seu problema com mais detalhes.
Tonin 5/05
7

Posso lhe interessar no DNS reverso?

Essencialmente, o cliente está fazendo o DNS reverso no servidor ou vice-versa.

Eu proponho um teste:

Desative as pesquisas de DNS no servidor editando / etc / ssh / sshd_config e verifique se "UseDNS" está definido como "não".

Execute "service ssh reload" (ou o que faz com que o seu daemon ssh releia a configuração) e tente novamente.

Incidencialmente, não aconteceu para finalmente solicitá-lo após um longo período de tempo, não é?

Outra coisa que você pode verificar é olhar o conteúdo de / etc / hosts no servidor para garantir que não haja nada errado.

Matt Simmons
fonte
1

Verifique as permissões no diretório ~ / .ssh e os arquivos nele. Seu umask padrão pode ser muito permissivo e, quando você recriou os arquivos, pode ter dado inadvertidamente permissões erradas. Fui queimado por isso algumas vezes. Nenhum dos clientes ssh (ou servidores) que eu usei já deu uma mensagem de erro útil sobre isso também ...

KevinRae
fonte
Obrigado pela dica. parece que minhas permissões são as mesmas. Eu posso usar ssh fine com minha conta root e verifiquei que as permissões são as mesmas. O estranho é que ele simplesmente trava e não diz nada. Obrigado pela tentativa!
saveraver 16/09/09
1

você tem espaço livre em disco no seu cliente (e no seu servidor)?

df -h

Omry
fonte
Obrigado. Sim. muito espaço. mais de 100 shows gratuitos. Obrigado pela dica tho.
saveraver 16/09/09
1

Eu tive um problema parecido.

ssh domain.ip:user.name

Parece que eu poderia ignorar o problema forçando um nome de login assim.

ssh -v domain.ip -l user.name
Drone Brain Inc
fonte
1

Para mim, a atualização para o Snow Leopard resolveu o problema. Então, acho que estava relacionado a um bug no OSX.

saveraver
fonte
0

Se for por causa de uma chave salva, você poderá excluí-la do diretório ~ / .ssh no arquivo known_hosts. Basta encontrar a entrada e excluí-la, e ela deverá ser solicitada novamente.

Por outro lado, deve emitir um aviso quando o host não corresponder ao que está registrado.

Eu tive problemas em que, no OS X, a pesquisa de nome de host atua como falha; a conexão atinge o tempo limite de espera por tanto tempo ou, quando o prompt é exibido, está aguardando há tanto tempo que leva cerca de dez segundos para você digitar uma senha antes de interromper a conexão. Eu nunca consegui rastreá-lo, apesar de as pessoas sugerirem adicionar o host em questão ao arquivo do host. Eu acho que foi apenas uma "falha nas pesquisas de DNS do OS X" e era esperado que fosse tolerado ... se alguém tivesse esse problema e o resolvesse, eu adoraria saber sobre isso.

Bart Silverstrim
fonte
Obrigado Bart! Então, eu basicamente apaguei tudo dentro do .ssh (sabiamente ou imprudentemente) e não há nada lá agora. Parece ainda congelar e continuar travando. Como eu também fiquei impressionado com o unknown_hosts, ele primeiro pergunta se eu quero continuar conectando, coloca a chave no arquivo known_hosts e fica travado no mesmo local que antes. Atualizarei rapidamente minha resposta para esclarecer esse ponto. Eu realmente aprecio sua ajuda.
saveraver
1
Realmente soa como a falha que eu encontrei em um MacBook. Parecia estar relacionado às pesquisas de DNS de alguma forma; finalmente, desisti e vivi com uma pausa muito longa antes de conectar e esperava que isso fosse corrigido mais tarde.
23410 Bart Silverstrim
0

Verifique os logs no servidor. Geralmente está em /var/log/auth.log(Debian / Ubuntu) ou /var/log/secure(RedHat / CentOS). Quaisquer problemas com a conexão geralmente são registrados lá.

Rory
fonte
0

Verifique se o / etc / hostname está com nova linha finalizada.

Massimo Fazzolari
fonte