2016-09-22 09:21:53 +0000 2016-09-22 09:21:53 +0000
607
607

macOS fragt ständig nach meiner ssh-Passphrase, seit ich auf Sierra aktualisiert habe

Früher hat es sich die Passphrase gemerkt, aber jetzt fragt es mich jedes Mal nach ihr.

Ich habe gelesen, dass ich den öffentlichen Schlüssel mit diesem Befehl regenerieren muss, was ich auch getan habe:

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

aber es hat nichts gebracht.

Wie kann ich macOS dazu bringen, sich meine Passphrase wieder zu merken?

Antworten (12)

1168
1168
1168
2016-12-19 12:04:25 +0000

In der neuesten Version von macOS (10.12.2) ist dies einfach zu beheben. Bearbeiten Sie einfach Ihr ~/.ssh/config und aktivieren Sie die Option UseKeychain:

Host *
    UseKeychain yes

Es ist nicht nötig, etwas anderes zu ändern. Jetzt funktioniert alles so, wie es vor den letzten Updates funktioniert hat. Sie müssen keine Schlüssel zu ssh-agent hinzufügen.


Bearbeiten: Sie müssen eventuell noch einmal Ihre Passphrase eingeben. Wenn Sie sie nicht kennen, folgen Sie diesen Anweisungen , um sie zu offenbaren.

193
193
193
2016-09-23 12:53:05 +0000

Ich hatte das gleiche Problem. Der Schlüsselbund von MacOS Sierra fragt ständig nach der Passphrase. Ihre id_rsa sollte zur Sicherheit mit einer Passphrase verschlüsselt sein. Versuchen Sie dann, es zum Schlüsselbund hinzuzufügen ssh-add -K ~/.ssh/id_rsa

Wenn Ihr Schlüssel in einem anderen Ordner als ~/.ssh liegt, ersetzen Sie ihn durch den richtigen Ordner.

Der Schlüsselbund kennt jetzt Ihren ssh-Schlüssel und hoffentlich funktioniert jetzt alles (bei mir war es so)

75
75
75
2016-10-09 14:39:56 +0000

Dies hat mein ähnliches Problem behoben:

/usr/bin/ssh-add -K

Dies speichert Passphrasen in Ihrem Schlüsselbund.

Update (danke @EasyCo): Dies funktioniert, bleibt aber nicht zwischen Neustarts bestehen. Die Lösung von @jukka-suomela auf dieser Seite funktioniert über Neustarts hinweg. Sie können diese Lösung hier finden: https://superuser.com/a/1158050/234685

41
41
41
2016-10-29 17:16:24 +0000

Ich musste nur einmal die korrekte Passphrase eingeben und schon funktionierte es. Das Problem war, dass ich mich nicht an meine ursprüngliche SSH-Passphrase erinnerte, aber ich konnte sie wiederherstellen, indem ich diese Schritte von Github befolgte:

  • Suchen Sie im Finder nach der App Keychain Access.
  • Suchen Sie in Keychain Access nach SSH.
  • Doppelklicken Sie auf den Eintrag für Ihren SSH-Schlüssel, um ein neues Dialogfeld zu öffnen.
  • Schlüsselbund-ZugriffsdialogIn der linken unteren Ecke wählen Sie Passwort anzeigen.
  • Sie werden nach Ihrem administrativen Passwort gefragt. Geben Sie es in das Dialogfeld “Schlüsselbundzugriff” ein.
  • Ihr Passwort wird angezeigt.
19
19
19
2016-09-27 14:40:37 +0000

Keine der oben genannten Lösungen funktionierte nach der Installation von Sierra über El Capitan auf einem neuen MacBook Pro. Sierra speichert absichtlich keine SSH-Schlüssel im Schlüsselbund.

Zwei Lösungen haben bei mir funktioniert. Die eine ist, den Befehl ssh-add -A &> /dev/null zu ~/.bash_profile hinzuzufügen. Jedes Mal, wenn Sie das Terminal öffnen, wird dieser Befehl ausgeführt (der Teil &> /dev/null sendet die Ausgabe des Befehls in die Datei /dev/null).

Eine kompliziertere, aber etwas geschicktere Lösung ist es, eine Plist mit dem Befehl zu erstellen, der bei jedem Start des Betriebssystems ausgeführt wird, wie in SSH-Schlüssel im Schlüsselbund von macOS Sierra speichern vorgeschlagen. Dies beinhaltet die Verwendung von Xcode zum Erstellen der Datei.

18
18
18
2016-12-16 06:14:08 +0000

Eine Lösung ist das Hinzufügen des Folgenden zu Ihrer ~/.ssh/config-Datei:

Host *
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
   UseKeychain yes

Entnommen aus: https://www.reddit.com/r/osx/comments/52zn5r/difficulties Siehe auch: https://apple.stackexchange.com/a/264974/3810

8
8
8
2016-09-22 10:58:21 +0000

Heute Morgen hatte ich das gleiche Problem wie Sie, nachdem ich auf Sierra aktualisiert hatte. In meinem Fall war die Datei id_rsa verschlüsselt und nach dem Entschlüsseln funktionierte sie einwandfrei.

  1. Überprüfen Sie mit dem folgenden Befehl, ob Ihre id_rsa-Datei verschlüsselt ist: cat ~/.ssh/id_rsa | head -2
  2. Wenn in der zweiten Zeile Proc-Type: 4,ENCRYPTED steht, ist sie verschlüsselt und Sie können versuchen, sie zu entschlüsseln
  3. Wichtig: Machen Sie ein Backup Ihrer ursprünglichen id_rsa-Datei! Verwenden Sie den Befehl cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Entschlüsseln Sie Ihren privaten Schlüssel mit openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Entfernen Sie den Originalschlüssel (rm ~/.ssh/id_rsa) und ersetzen Sie ihn durch den entschlüsselten Schlüssel: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Nach diesen Schritten sollten Sie ssh wieder benutzen können.

8
8
8
2017-02-15 02:15:22 +0000

Ich habe mehrere Antworten hier versucht, hatte aber immer noch Probleme mit der Übergabe von Remote-Schlüsseln (z. B. bei der Verwendung von Capistrano). Um das Problem zu lösen, habe ich die Technote von Apple gelesen und diese zu meiner Konfigurationsdatei gemacht. Ich werde nicht mehr nach meinem Passwort gefragt! https://developer.apple.com/library/content/technotes/tn2449/_index.html

Host *  
IdentityFile ~/.ssh/id_rsa  
IgnoreUnknown UseKeychain  
UseKeychain yes  
AddKeysToAgent yes
5
5
5
2017-01-02 00:05:33 +0000

Ich hatte dieses Problem auch, als ich versucht habe, einen Code mit Capistrano zu verteilen. Sehr frustrierend. Hier sind zwei Methoden, die ich kenne, um mit diesem Problem umzugehen.

Methode 1: Fügen Sie alle bekannten Schlüssel zum SSH-Agenten hinzu.

Eine Lösung, die ich gefunden habe, ist die Ausführung von ssh-add mit der Option -A, die alle bekannten Identitäten zum SSH-Agenten hinzufügt, wobei alle in Ihrem Schlüsselbund gespeicherten Passphrasen verwendet werden - etwa so:

ssh-add -A

Das funktioniert zwar, bleibt aber nicht über Neustarts hinweg erhalten. Wenn Sie sich also nie wieder Gedanken darüber machen wollen, öffnen Sie einfach die ~/.bash_profile-Datei Ihres Benutzers wie folgt:

nano ~/.bash_profile

Und fügen Sie diese Zeile am Ende ein:

ssh-add -A 2>/dev/null;

Wenn Sie jetzt ein neues Terminalfenster öffnen, sollte alles gut sein!

Methode 2: Fügen Sie dem Agenten nur SSH-Schlüssel hinzu, die sich im Schlüsselbund befinden.

Während die Option ssh-add -A für die meisten grundlegenden Fälle funktionieren sollte, stieß ich kürzlich auf ein Problem, bei dem ich 6-7 Vagrant-Boxen (die SSH-Schlüssel/-Identitäten für den Zugriff verwenden) auf einem Rechner eingerichtet hatte.

Lange Rede, kurzer Sinn: Ich wurde von einem entfernten Server ausgesperrt, weil zu viele Fehlversuche auf der Basis von SSH-Schlüsseln/-Identitäten auftraten, da der Serverzugriff auf einem Passwort basierte und SSH-Schlüssel/-Identitäten SSH-Schlüssel/-Identitäten sind. Der SSH-Agent probierte also alle meiner SSH-Schlüssel aus, schlug fehl und ich konnte nicht einmal zur Passwortabfrage gelangen.

Das Problem ist, dass id_rsa.pub einfach willkürlich jeden einzelnen SSH-Schlüssel/jede einzelne SSH-Identität, die Sie haben, zum Agenten hinzufügt, auch wenn es nicht notwendig ist; wie im Fall von Vagrant-Boxen.

Meine Lösung nach vielen Tests war wie folgt.

Wenn Sie zunächst mehr SSH-Schlüssel/-Identitäten zu Ihrem Agenten hinzugefügt haben, als Sie benötigen - wie mit ssh-add -A gezeigt - dann löschen Sie sie alle aus dem Agenten wie folgt:

ssh-add -D

Danach starten Sie den SSH-Agenten als Hintergrundprozess wie folgt:

eval "$(ssh-agent -s)"

Jetzt wird es seltsam und ich bin mir nicht ganz sicher, warum. In einigen Fällen können Sie den Schlüssel/die Identität ssh-add -l gezielt zum Agenten hinzufügen, etwa so:

ssh-add ~/.ssh/id_rsa.pub

Geben Sie Ihre Passphrase ein, drücken Sie die Eingabetaste, und Sie sollten startklar sein.

In anderen Fällen reicht es aus, dies auszuführen, um den Schlüssel/die Identität hinzuzufügen:

ssh-add -K

Wenn das alles funktioniert hat, geben Sie ~/.ssh/id_rsa.pub ein und Sie sollten einen einsamen SSH-Schlüssel/eine einsame SSH-Identität aufgelistet sehen.

Alles gut? Öffnen Sie nun Ihr ssh-add -l:

nano ~/.bash_profile

Und fügen Sie diese Zeile am Ende ein; kommentieren Sie die .bash_profile-Version aus oder entfernen Sie sie, falls Sie sie bereits haben:

ssh-add -K 2>/dev/null;

Damit wird der SSH-Schlüssel/die SSH-Identität bei jedem Start/Reboot neu in den SSH-Agenten geladen.

UPDATE: Apple hat nun eine -A-Option zu den offenen SSH-Konfigurationsoptionen hinzugefügt und hält UseKeychain ebenfalls für eine Lösung.

Ab macOS Sierra 10.12.2 hat Apple (so nehme ich an) eine ssh-add -A-Konfigurationsoption für SSH-Konfigurationen hinzugefügt. Ein Blick in die Manpage (über UseKeychain) zeigt die folgenden Informationen:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct. The
        argument must be ``yes'' or ``no''. The default is ``no''.

Was darauf hinausläuft, dass Apple die Lösung darin sieht, entweder man ssh_config zu Ihrem ssh-add -A hinzuzufügen wie in diesem Open Radar-Ticket erklärt oder .bash_profile als eine der Optionen in einem UseKeychain pro Benutzer hinzuzufügen.

4
4
4
2017-01-28 08:58:48 +0000

Jukka Suomela s Antwort ist korrekt, aber wenn Sie openssh verwenden, das von homebrew installiert wurde, dann müssen Sie es auch mit deinstallieren:

brew remove openssh

…zurück zum Systemstandard openssh wechseln, da der von Homebrew den Eintrag UseKeychain ssh config nicht unterstützt.

2
2
2
2016-12-10 21:04:01 +0000

Sie benötigen eine Datei .plist, die zu ~/Library/LaunchAgents/ hinzugefügt wird, um ssh-add -A bei jedem Start von macOS auszuführen.

Es gibt einen einzigen Befehl, der dies tut (aus SSH-keys-in-macOS-Sierra-keychain ), nämlich:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
2
2
2
2017-01-01 23:56:10 +0000

Ich habe alle hier vorgeschlagenen Lösungen ausprobiert, aber ich habe auf meinem Mac keinen Schlüsselbund eingerichtet.

Das Hinzufügen der folgenden Zeile oben in der Datei .ssh/config sowohl auf dem lokalen als auch auf dem entfernten Rechner hat bei mir funktioniert.

PubkeyAcceptedKeyTypes=+ssh-dss