Der passwortgeschützte SSH-Schlüssel kann in OS X Mavericks nicht entsperrt werden

Ich habe gerade auf OSX 10.9 aktualisiert, und beim Versuch, eine SSH-Verbindung mit Authentifizierung mit öffentlichem Schlüssel herzustellen, wird eine Eingabeaufforderung angezeigt, in der Sie nach meinem SSH-Schlüsselpasswort gefragt werden.

Ich dachte zunächst, dass das Upgrade dazu führt, dass der Schlüsselbund einige Passwörter vergisst, also habe ich meine neu eingegeben. Anscheinend war das nicht die Ursache, denn der Prompt kam immer wieder.

Ich dachte zuerst, dass ich möglicherweise das falsche Passwort verwende, aber während der folgende Befehl:

$ 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

...funktioniert nicht! Wenn ich versuche, openssl zu verwenden:

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

Mein privater Schlüssel wird korrekt entschlüsselt und alle Informationen werden gedruckt.

Was ist mit dem Upgrade auf Mavericks passiert? Wie bekomme ich meinen privaten Schlüssel wieder in einen brauchbaren Zustand?

Antworten (7)

Anscheinend war der private Schlüssel, den ich auf meiner Maschine benutzte, ein alter. Mein Schlüssel enthielt nicht die Verschlüsselungsinformationen, die der privaten Schlüsseldatei hinzugefügt wurden, wenn ich eine neue erstelle:

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

Um das Problem zu lösen, habe ich den Schlüssel mit openssl entschlüsselt:

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

...und dann neu verschlüsselt:

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

Und für alle Fälle regenerieren Sie auch den öffentlichen Schlüssel:

$ ssh-keygen -y -f id_rsa > id_rsa.pub

Ich hatte das gleiche Problem. Ich habe es gelöst, indem ich .ssh/authorized_keys2 nach .ssh/authorized_keys verschoben habe.

Die Datei /etc/sshd_config enthält explizit diese Zeilen:

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

Dies ist eine Änderung gegenüber der vorherigen Macosx-Version?

Auch dieses Problem ist ein anderes. In meinem Fall konnte ich meinen privaten Schlüssel nicht entschlüsseln.

Die Verwendung von brew openssl und openssh behebt das PCKS#8-Problem auf 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

Ich bin mir nicht sicher, ob die erzwungene Verknüpfung von openssl irgendetwas auf Mavricks kaputt macht. Bisher sind mir keine Probleme aufgefallen.

Hier das gleiche Problem, meine Tasten zeigen das gleiche Verhalten.

Ich habe das Problem bis zu diesem Blogbeitrag zurückverfolgt. Ich habe meine SSH-Schlüssel so modifiziert, wie es in diesem Artikel beschrieben wurde, um die Sicherheit zu erhöhen, und es funktionierte unter Mountain Lion. http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

Ich gehe davon aus, dass Apple etwas mit openssh geändert hat und die "neue" Version das neuere PKCS # 8-Format nicht lesen kann.

Meine Mavericks OpenSSH-Version:OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Ich habe keinen anderen Mac, daher kann ich ihn nicht mit der Mountain Lion-Version vergleichen.

/usr/bin/ssh -Vdruckt OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011auf meiner 10.8.0 VM.
Interessant, wenn Sie Zeit haben, können Sie überprüfen, was "ssh-keygen -vvv -y -f id_rsa" anzeigt, wenn Sie einen pkcs # 8-Schlüssel verwenden?
Mein pkcs #8-Schlüssel, der über denselben Link abgeleitet wurde, zeigt Folgendes: gist.github.com/cbowns/7359383/raw/…

Ich konnte dieses Problem beheben, indem ich einfach Folgendes tat:

cd ~/.ssh
mv known_hosts known_hosts.old

Jetzt geh und verbinde dich. Wenn die Standardfrage zum Hinzufügen des Fingerabdrucks gestellt wird, geben Sie "Ja" ein.

Aber vergessen Sie nicht, den Fingerabdruck zu überprüfen!
Dies ist ein anderes Problem als das, was ich gefragt habe. Die Known-Hosts-Datei hat mit dem hier aufgetretenen Problem (Entschlüsselung des privaten Schlüssels) nichts zu tun.

Zufällig dieses Problem bekommen. Durch den Versuch, die Chiffre anzugeben, konnte ich sie gut zum Laufen bringen.

Wenn Sie unter Linux versuchen, Schlüsselpaare zu generieren, verwenden Sie Folgendes:

ssh-keygen -t rsa -Z aes256

Der öffentliche Schlüssel jetzt mit Chiffre aes256 kann von ssh auf OSX korrekt erkannt werden (hier ist meiner 10.12.1).

Sie können einen PuTTY-Schlüssel in einen OpenSSL OS X-Schlüssel konvertieren:

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

Geben Sie die Passphrase ein und Sie sind fertig.