O OpenSSH não aceita chaves ECDSA

9

Acabei de gerar uma chave ECDSA com ssh-keygen:

ssh-keygen -t ecdsa -b 521 

Depois, copiei essa chave para o meu servidor:

cat .ssh/id_ecdsa.pub | ssh myserver "tee -a .ssh/authorized_keys"

Eu verifiquei que minha chave está no arquivo.

No entanto, quando tento conectar, minha conexão é rejeitada:

ssh -v -i .ssh/id_ecdsa myserver

Histórico:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to myserver [192.168.1.1] port 22.
debug1: Connection established.
debug1: identity file .ssh/id_ecdsa type 3
debug1: Checking blacklist file /usr/share/ssh/blacklist.ECDSA-521
debug1: Checking blacklist file /etc/ssh/blacklist.ECDSA-521
debug1: identity file .ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1
debug1: match: OpenSSH_6.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 10:27:b8:78:2c:e1:e3:42:8e:e3:66:c4:cc:4e:f1:c0
debug1: Host 'myserver' is known and matches the RSA host key.
debug1: Found key in /home/naftuli/.ssh/known_hosts:73
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering ECDSA public key: .ssh/id_ecdsa
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

Encontrei isso nos logs do servidor:

auth.info sshd[13874]: userauth_pubkey: unsupported public key algorithm: ecdsa-sha2-nistp521 [preauth]

Tanto o meu cliente como o servidor estão usando o OpenSSH. A versão do OpenSSH do servidor é o OpenSSH 6.1, a versão do OpenSSH do meu cliente é o OpenSSH 5.9.

Como posso saber quais algoritmos de chave são suportados pelo meu servidor?

Naftuli Kay
fonte
OpenWRT 12.09 Ajuste de atitude. Posso recompilar o servidor OpenSSH, se necessário. Existe uma maneira de pelo menos listar os algoritmos suportados?
Naftuli Kay

Respostas:

7

Como muitos outros sistemas embarcados, o OpenWrt usa o dropbear como servidor ssh, e não o OpenSSH mais pesado que é comumente visto nos sistemas Linux. As versões mais antigas do dropbear suportam apenas chaves RSA e DSA; o suporte ao ECDSA não foi adicionado até a versão 2013.62 (que foi lançada apenas há alguns dias).

Ele deve aparecer em breve no Barrier Breaker (porta-malas); mas você não o verá no Ajuste de atitude.

Michael Hampton
fonte
Na verdade, eu instalei e configurei o OpenSSH no meu roteador OpenWRT. É por isso que estou surpreso que não funcione.
Naftuli Kay
Ou seja: não estou usando o dropbear e ele foi desinstalado.
Naftuli Kay
Nesse caso, você está (1) por conta própria e (2) aparentemente fora dos limites do que eu esperaria em um ambiente profissional.
Michael Hampton
Eu suponho que sim. Vou entrar em contato com a OpenWRT e ver o que posso fazer. O OpenSSH é fornecido como um pacote no OpenWRT, por isso estou me perguntando por que isso me colocaria sozinho.
Naftuli Kay
0

ecdsaé suportado a partir do openssh-server versão 5.7 . Qual versão do openssh-server você está executando? Corra dpkg -l | grep openssh-server | awk '{print $3}' | cut -d: -f2para encontrar a versão.

slayedbylucifer
fonte
0

Se o seu sistema for o Red Hat Enterprise Linux 6.4 (ou mais antigo) ou o Fedora 19 (ou mais antigo), observe que o ECDSA foi removido de lá. Não tenho detalhes por que isso aconteceu (talvez razões legais): https://www.mail-archive.com/[email protected]/msg00755.html

lzap
fonte
O ECDSA está no RHEL 6.5. como parte do openssl 1.0.1 e também observe que o OP esclarece que eles estão usando o OpenWRT 12.09
user9517
Ah, certo, editado.
Lzap 6/12/13
3
Sim, foram razões legais. Ainda hoje, nem todo distribuidor habilita a criptografia de curva elíptica devido às patentes; O RedHat apenas ativou algumas curvas, não o ECC em geral, após cuidadosa revisão legal, mas as que eles ativaram foram influenciadas pelo NIST (e, portanto, pela NSA). Convém manter-se afastado do ECC, mesmo que o poder de computação reduzido seja enganosamente agradável.
mirabilos
0

Deixando isso aqui porque aconteceu comigo:

Dia 1: Configurando uma nova máquina, copiei as chaves - as minhas primeiro - e consegui fazer o login corretamente.

Dia 2: Não consigo fazer login com minha chave ed25519. Hã? Eu adiciono uma chave RSA; funciona. Gero uma nova chave ed25519 e ela funciona ... mas a antiga não. WTF?

Acontece que, após o teste, instalei minha chave no .ssh / protected_keys do root como um backup ... e esqueci de corrigir as permissões nesse arquivo. Portanto, o openssh colocou minha chave na lista negra, tornando-me incapaz de efetuar login. A correção das permissões em /root/.ssh/authorized_keys me permitiu fazer login como usuário .

pjz
fonte