Nie można odblokować klucza SSH chronionego hasłem w OS X Mavericks

18

Właśnie zaktualizowałem system do OSX 10.9, a gdy próbuję ustanowić połączenie SSH z uwierzytelnianiem klucza publicznego, pojawia się monit z prośbą o hasło do klucza SSH.

Początkowo myślałem, że aktualizacja spowodowała, że ​​pęku kluczy zapomniałem niektóre hasła, więc wróciłem do mojego. Najwyraźniej nie była to przyczyna, ponieważ monit pojawiał się ponownie.

Najpierw pomyślałem, że mogę używać niewłaściwego hasła, ale podczas następującego polecenia:

$ 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

...nie działa! Jeśli spróbuję użyć openssl:

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

mój klucz prywatny jest poprawnie odszyfrowany i wszystkie informacje są drukowane.

Co się stało z uaktualnieniem do Mavericks? Jak mogę odzyskać mój klucz prywatny z powrotem do stanu użytecznego?

GaretJax
źródło

Odpowiedzi:

22

Najwyraźniej klucz prywatny, którego używałem na moim komputerze, był stary. Mój klucz nie zawierał informacji o szyfrowaniu dodanych do pliku klucza prywatnego, jeśli wygeneruję nowy:

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

Aby rozwiązać problem, odszyfrowałem klucz za pomocą openssl:

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

... a następnie ponownie zaszyfrowałem:

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

Na wszelki wypadek zregeneruj również klucz publiczny:

$ ssh-keygen -y -f id_rsa > id_rsa.pub
GaretJax
źródło
3

Miałem ten sam problem. Rozwiązałem go, przenosząc .ssh / Author_keys2 do .ssh / Author_keys.

Plik / etc / sshd_config zawiera jawnie następujące linie:

\# 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

To jest zmiana w stosunku do poprzedniej wersji macosx?

real
źródło
1
Ten problem jest również inny. W moim przypadku nie byłem w stanie odszyfrować mojego klucza prywatnego.
GaretJax,
2

Ten sam problem tutaj, moje klucze wykazują takie samo zachowanie.

Śledziłem problem z powrotem do tego postu na blogu. Zmodyfikowałem moje klucze ssh w sposób opisany w tym artykule, aby zwiększyć bezpieczeństwo i działało to u Mountain Lion. http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

Zakładam, że Apple coś zmieniło w openssh i „nowa” wersja nie jest w stanie odczytać nowszego formatu PKCS # 8.

Moja wersja MaSSicks OpenSSH: OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Nie mam innego komputera Mac, więc nie mogę go porównać z wersją Mountain Lion.

tripplet
źródło
/usr/bin/ssh -Vdrukuje OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011na mojej maszynie wirtualnej 10.8.0.
Lri
Interesujące, jeśli masz czas, czy możesz sprawdzić, co pokazuje „ssh-keygen -vvv -y -f id_rsa”, jeśli używasz klucza pkcs # 8?
tripplet
Mój klucz pkcs # 8, uzyskany przez ten sam link, pokazuje to: gist.github.com/cbowns/7359383/raw/…
cbowns
2

Korzystanie z brew openssl i openssh rozwiązuje problem PCKS # 8 w 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

Nie jestem pewien, czy połączenie siłowe openssl psuje coś na Mavricks. Do tej pory nie zauważyłem żadnych problemów.

simple10
źródło
0

Byłem w stanie rozwiązać ten problem, wykonując następujące czynności:

cd ~/.ssh
mv known_hosts known_hosts.old

Teraz idź i połącz się. Kiedy zadaje standardowe pytanie, aby dodać typ odcisku palca, tak.

Glen Barnhardt
źródło
Ale nie zapomnij sprawdzić odcisku palca!
zigg
1
To jest inny problem niż to, o co prosiłem. Znany plik hosts nie ma nic wspólnego z napotkanym problemem (odszyfrowanie klucza prywatnego)
GaretJax,
0

Zdarzyło się, aby uzyskać ten problem. Próbując określić szyfr, udało mi się sprawić, by działał dobrze.

W systemie Linux, gdy próbujesz wygenerować pary kluczy, użyj tego:

ssh-keygen -t rsa -Z aes256

Klucz publiczny z szyfrem aes256 może być poprawnie rozpoznany przez ssh w OSX (tutaj mój to 10.12.1).

cbakgly
źródło
0

Możesz przekonwertować klucz PuTTY na klucz OpenSSL OS X:

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

Wpisz hasło i gotowe.

Lew
źródło