Não é possível desbloquear a chave SSH protegida por senha no OS X Mavericks

18

Acabei de atualizar para o OSX 10.9 e, ao tentar estabelecer uma conexão SSH com autenticação de chave pública, aparece um prompt solicitando minha senha de chave SSH.

Inicialmente, pensei que a atualização fizesse com que o chaveiro esquecesse algumas senhas, então reinsirai as minhas. Aparentemente, essa não foi a causa, porque o prompt continuou reaparecendo.

Primeiro, porém, posso estar usando a senha errada, mas enquanto o seguinte comando:

$ ssh-keygen -vvv -y -f id_rsa >| id_rsa.pub
debug3: Incorrect RSA1 identifier
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase:
debug3: Incorrect RSA1 identifier
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
load failed

...não funciona! Se eu tentar usar o openssl:

$ openssl rsa -in id_rsa -text
Enter pass phrase for id_rsa:
Private-Key: (2048 bit)
modulus:
    00:...

minha chave privada é decifrada corretamente e todas as informações são impressas.

O que aconteceu com a atualização para o Mavericks? Como posso recuperar minha chave privada em um estado utilizável?

GaretJax
fonte

Respostas:

22

Aparentemente, a chave privada que eu estava usando na minha máquina era antiga. Minha chave não contém as informações de criptografia adicionadas ao arquivo de chave privada se eu gerar uma nova:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-...

Para resolver o problema, decodifiquei a chave com o openssl:

$ cd ~/.ssh
$ cp id_rsa id_rsa.bck
$ openssl rsa -in id_rsa -out id_rsa

... e depois a criptografou novamente:

$ openssl rsa -in id_rsa -aes256 -out id_rsa
$ chmod 0600 id_rsa

E, por precaução, gere novamente a chave pública:

$ ssh-keygen -y -f id_rsa > id_rsa.pub
GaretJax
fonte
3

Eu tive o mesmo problema. Eu o resolvi movendo .ssh / allowed_keys2 para .ssh / allowed_keys.

O arquivo / etc / sshd_config contém explicitamente estas linhas:

\# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
\# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile  .ssh/authorized_keys

Esta é uma alteração da versão anterior do macosx?

real
fonte
11
Esse problema também é diferente. No meu caso, não fui capaz de descriptografar minha chave privada.
precisa saber é o seguinte
2

Mesmo problema aqui, minhas chaves mostram o mesmo comportamento.

Eu rastreei o problema de volta a esta postagem do blog. Modifiquei minhas teclas ssh da maneira que foi descrita neste artigo para aumentar a segurança e funcionou sob o Mountain Lion. http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

Presumo que a Apple tenha mudado algo com o openssh e a versão "nova" não é capaz de ler o formato PKCS # 8 mais recente.

Versão do My Mavericks OpenSSH: OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Como não tenho outro Mac, não posso compará-lo com a versão do Mountain Lion.

tripplet
fonte
/usr/bin/ssh -Vimprime OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011na minha VM 10.8.0.
Lr
Interessante, se você tiver tempo, pode verificar o que "ssh-keygen -vvv -y -f id_rsa" mostra se você usa uma chave pkcs # 8?
tripplet 24/10/2013
Minha chave do pkcs # 8, derivada desse mesmo link, mostra o seguinte: gist.github.com/cbowns/7359383/raw/…
cbowns
2

O uso do brew openssl e openssh corrige o problema PCKS # 8 no Mavericks.

brew update
brew install openssl
brew link openssl --force
brew install openssh

# confirm correct bins are being used
# both should be located in /usr/local/bin
which openssl
which openssh

# add key back to keychain
ssh-add ~/.ssh/id_rsa

Não tenho certeza se a força que vincula o openssl quebra alguma coisa no Mavricks. Até agora, não notei nenhum problema.

simple10
fonte
0

Consegui corrigir esse problema simplesmente fazendo o seguinte:

cd ~/.ssh
mv known_hosts known_hosts.old

Agora vá e conecte-se. Quando ele faz a pergunta padrão, adicione sim o tipo de impressão digital.

Glen Barnhardt
fonte
Mas não se esqueça de verificar a impressão digital!
Zigg
11
Este é um problema diferente do que eu estava perguntando. O arquivo hosts conhecido não tem nada a ver com o problema encontrado aqui (descriptografia da chave privada)
GaretJax
0

Aconteceu com esse problema. Ao tentar especificar a cifra, consegui fazê-la funcionar bem.

No Linux, ao tentar gerar pares de chaves, use o seguinte:

ssh-keygen -t rsa -Z aes256

A chave pública agora com a cifra aes256 pode ser reconhecida corretamente pelo ssh no OSX (aqui, a minha é 10.12.1).

cbakgly
fonte
0

Você pode converter uma chave PuTTY em uma chave do OpenSSL OS X:

puttygen putty.ppk -O private-openssh -o osx.key

Digite a senha e pronto.

Leo
fonte