Estou tendo problemas ao usar chaves autorizadas para efetuar login no SSH em um servidor remoto. As mensagens de erro que eu recebo são assim:
OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xx.xx.xx [xxx.xx.xx.xx] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file /Users/bfenker/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
...
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /Users/bfenker/.ssh/id_rsa type 1
ssh_exchange_identification: Connection closed by remote host
Outras perguntas neste site postaram perguntas semelhantes, e a solução geralmente era verificar novamente todas as permissões no lado do cliente, o que eu fiz:
drwxr-xr-x+ 23 bfenker staff 782 May 8 11:02 bfenker
drwx------ 8 bfenker staff 272 May 8 10:05 .ssh
-rw------- 1 bfenker staff 1675 May 8 09:51 id_rsa
-rw-r--r-- 1 bfenker staff 418 May 8 09:51 id_rsa.pub
-rw------- 1 bfenker staff 999 May 8 09:46 identity
-rw-r--r-- 1 bfenker staff 663 May 8 09:46 identity.pub
-rw-r--r-- 1 bfenker staff 416 May 8 09:06 known_hosts
Eu posso usar a chave autorizada para SSH em outro servidor e deste servidor SSH no servidor que eu quero. Esta é uma solução transitável que estou tentando corrigir, mas acho que também mostra que meu cliente e o servidor estão configurados corretamente.
Observe que, quando eu SSH com êxito em um servidor diferente, recebo as mesmas mensagens de erro, mas parece recuperar a partir das linhas:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
Alguém sabe por que isso funciona em alguns casos, mas não no caso que eu quero? Qualquer outra sugestão seria muito apreciada!
/etc/hosts.allow
e os/etc/hosts.deny
arquivos?Respostas:
Necroquestion! Com base no fato de que você pode usar essa chave para fazer login em outro servidor, @ michael-hampton está na trilha correta: existe algo (firewall / tcp wrappers / sshd config) no servidor de destino que está negando acesso. Toda essa conversa sobre formatos de chave incorretos é um arenque vermelho baseado na interpretação incorreta das informações de depuração. A linha
indica que o ssh conseguiu entender a chave.
fonte
Sua chave SSH é armazenada no formato errado. O OpenSSH usa chaves que são colocadas em uma única linha. Você precisa
ssh-keygen
com-i
e-m
opções, consulteman ssh-keygen
. Provavelmente um destes:Use a saída como novo arquivo de chave (
ssh-keygen ... >newkeyfile
).Editar 1:
Lembre-se do seguinte: "Esta opção lerá um arquivo de chave privado (ou público) não criptografado "
Portanto, provavelmente o arquivo deve ser alterado para um sem senha por um programa que entende esse formato.
fonte
-m
opção, e tentando sem a-m
opção me dá esse erro:buffer_get_string_ret: bad string length 813827235
key_from_blob: can't read key type
decode blob failed.
putty
no Windows. Mas massa é tão bom a muito oferecer convenientemente ambos os formatos ... (pelo menos para as chaves públicas)buffer_get_string_ret: bad string length 813827235
A primeira linha do meu arquivo de chave é-----BEGIN RSA PRIVATE KEY-----
e, começando na próxima linha, há uma longa lista de caracteres alfanuméricos. @Hauke LagingPrimeiro você deve verificar seus logs sshd. ie
Dependendo do arquivo de distribuição unix com log de segurança, pode ser diferente. Mas quando você descobrir se, deve informar o motivo pelo qual você não pode fazer login.
fonte
Eu também enfrentei esse problema recentemente. No meu caso, todas as permissões estavam corretas, incluindo .ssh, o arquivo rsa, o diretório inicial e tudo relacionado ao usuário. O problema era que eu tinha uma chave pública gerada anteriormente em .ssh que não correspondia à chave privada que eu estava usando para fazer login. A remoção da chave pública de .ssh corrigiu o problema.
Eu estava usando ssh-keygen para criar o diretório .ssh que resultou nessa chave de pub e, portanto, no problema.
fonte
Eu sinto que as respostas aqui não são muito claras. A resposta de Mark Wagner cobre, mas não explica completamente a situação.
As linhas na saída são prefixadas com seus níveis de depuração, o que também dá uma dica de sua significância: mas números mais baixos são mais significativos. O
debug3:
material é muito menos importante do quedebug1:
Quando o arquivo de chave é lido, o ssh tenta primeiro analisá-lo como a chave RSA obsoleta (agora chamada de "RSA1"), essas chaves começam com
SSH PRIVATE KEY FILE FORMAT
e um número de versão. As novas chaves RSA são iniciadas-----BEGIN RSA PRIVATE KEY-----
. Aqui está uma tentativa de login em queidentity
existe uma chave antiga de estilo RSA1 eid_rsa
é um novo estilo.Neste ponto, ele identificou os tipos de chave nos arquivos
identity
comotype 0
eid_rsa
comotype 1
. Os outros arquivos que ele verifica não existem e são assimtype -1
.Como esse é o protocolo 2, a entrada RSA do protocolo 1
identity
será ignorada durante a troca de chaves.Aqui, ele nos lembra os principais arquivos que deseja usar. Não sei por que ele não rejeitou os arquivos ausentes, apenas o arquivo do protocolo 1, mas ...
E aqui ele oferece a
id_rsa
chave e é aceito.Portanto, em resumo, a questão no título da pergunta é um arenque vermelho que vem do ssh tentando várias maneiras de analisar as chaves encontradas, não um problema real com uma chave.
fonte
Eu tive o mesmo problema no meu MacBook Pro com MacOS 10.7.5. Não havia nada de errado com minhas chaves, é apenas que elas foram criptografadas (com uma senha, como você deveria fazer) e não estavam sendo criptografadas pelo ssh corretamente. Parece que
ssh-agent
está tendo problemas.De acordo com este artigo , tente o seguinte:
Coloque
/usr/bin/ssh-agent
seus Itens de Login (Preferências do Sistema -> Usuários e Grupos -> selecione usuário -> Itens de Login). Como é muito difícil navegar/usr/bin
na caixa de diálogo, o artigo sugere criar um link no diretório inicial (ln -s /usr/bin/ssh-agent
) que você pode remover depois de colocá-lo nos itens de login.Saia do Terminal.app
Reinicie a máquina.
Abra o Terminal e tente novamente o seu comando ssh.
Funcionou para mim (pelo menos uma vez).
fonte