it-swarm.com.de

macOS fragt immer wieder nach meiner SSH-Passphrase, seit ich auf Sierra aktualisiert habe

Früher erinnerte es sich an die Passphrase, jetzt wird ich jedes Mal danach gefragt.

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

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

aber es hat nichts behoben.

Wie kann ich macOS wieder an meine Passphrase erinnern lassen?

555
erwan

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

Host *
    UseKeychain yes

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


Bearbeiten: Möglicherweise müssen Sie Ihre Passphrase noch einmal eingeben. Wenn du es nicht weißt, folge diesen Anweisungen , um es zu enthüllen.

1075
Jukka Suomela

Ich hatte das gleiche problem Der MacOS Sierra-Schlüsselbund fragt immer wieder nach der Passphrase. Ihre id_rsa sollte aus Sicherheitsgründen mit einer Passphrase verschlüsselt sein. Dann versuche es dem Schlüsselbund hinzuzufügen ssh-add -K ~/.ssh/id_rsa

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

Schlüsselbund kennt jetzt deinen SSH-Schlüssel und hoffentlich funktioniert jetzt alles (meiner hat es getan)

176
Lars G.

Dies hat mein ähnliches Problem behoben:

/usr/bin/ssh-add -K

Dadurch werden Passphrasen in Ihrem Schlüsselbund gespeichert.

Update (danke @EasyCo): Dies funktioniert, bleibt aber zwischen Neustarts nicht bestehen. @ jukka-suomela's Lösung auf dieser Seite does funktioniert über Neustarts hinweg. Diese Antwort finden Sie hier:

https://superuser.com/a/1158050/234685

66
critikaster

Ich musste nur einmal die richtige Passphrase eingeben und es fing an zu funktionieren. Das Problem war, dass ich mich nicht an meine ursprüngliche SSH-Passphrase erinnerte, diese aber mit den folgenden Schritten von Github wiederherstellte:

  • Suchen Sie im Finder nach der Keychain Access-App.
  • Suchen Sie in Keychain Access nach SSH.
  • Doppelklicken Sie auf den Eintrag für Ihren SSH-Schlüssel, um ein neues Dialogfeld zu öffnen.
  • Dialogfeld "Schlüsselbundzugriff" Wählen Sie in der linken unteren Ecke die Option "Kennwort anzeigen".
  • Sie werden aufgefordert, Ihr Administratorkennwort einzugeben. Geben Sie es in das Dialogfeld "Schlüsselbund" ein.
  • Ihr Passwort wird aufgedeckt.
40
Olli Jaakkola

Keine der oben genannten Lösungen hat funktioniert, nachdem Sierra über El Capitan auf einem neuen MacBook Pro installiert wurde. Sierra speichert keine SSH-Schlüssel im Schlüsselbund.

Zwei Lösungen haben für mich funktioniert. Einer 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 an die Datei/dev/null).

Eine kompliziertere, aber etwas raffiniertere Lösung besteht darin, mit dem Befehl, der bei jedem Booten des Betriebssystems ausgeführt wird, eine Liste zu erstellen, wie in Speichern von SSH-Schlüsseln in macOS Sierra keychain angegeben. Dies beinhaltet die Verwendung von Xcode zum Erstellen der Datei.

18
Hank Snow

Eine Lösung besteht darin, Ihrer ~/.ssh/config-Datei Folgendes hinzuzufügen:

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

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

15
ThomasW

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

  1. Überprüfen Sie, ob Ihre id_rsa-Datei mit dem folgenden Befehl verschlüsselt ist: cat ~/.ssh/id_rsa | head -2
  2. Wenn in der zweiten Zeile Proc-Type: 4,ENCRYPTED steht, ist es verschlüsselt und Sie können versuchen, es zu entschlüsseln
  3. Wichtig: Erstellen Sie eine Sicherungskopie Ihrer ursprünglichen id_rsa-Datei! Verwenden Sie den Befehl cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Entschlüssle deinen 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: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

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

7
Martijn Pieters

Ich habe hier mehrere Antworten ausprobiert, hatte aber immer noch Probleme mit der Weitergabe von Remote-Schlüsseln (z. B. bei der Verwendung von capistrano). Um das Problem zu lösen, habe ich die technischen Hinweise von Apple gelesen und diese zu meiner Konfigurationsdatei gemacht. Nie mehr nach meinem Passwort fragen!

https://developer.Apple.com/library/content/technotes/tn2449/_index.html

Host *  
   IdentityFile ~/.ssh/id_rsa  
   IgnoreUnknown UseKeychain  
   UseKeychain yes  
   AddKeysToAgent yes
3
Geek Goddess

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

brew remove openssh

... um wieder zum Standardsystem zu wechseln openssh, da Homebrews UseKeychain ssh config entry nicht unterstützt.

3
Greg Dubicki

Ich hatte dieses Problem auch, als ich versuchte, Code mit Capistrano bereitzustellen. Sehr frustrierend. Ich kenne zwei Methoden, um dieses Problem zu lösen.

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

Daher habe ich eine Lösung gefunden, die darin besteht, ssh-add mit der Option -A auszuführen, die dem SSH-Agenten alle bekannten Identitäten hinzufügt und dabei alle in Ihrem Schlüsselbund gespeicherten Passphrasen verwendet:

ssh-add -A

Dies funktioniert jetzt, wird jedoch nach einem Neustart nicht fortgesetzt. Wenn Sie sich also nie wieder Sorgen machen möchten, öffnen Sie einfach die ~/.bash_profile-Datei Ihres Benutzers wie folgt:

nano ~/.bash_profile

Und füge diese Zeile unten hinzu:

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

Wenn Sie jetzt ein neues Terminalfenster öffnen, sollte alles in Ordnung 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 vor kurzem auf ein Problem, bei dem 6-7 Vagrant-Boxen (die SSH-Schlüssel/-Identitäten für den Zugriff verwenden) auf einem Computer zusätzlich zu dem allgemeineren id_rsa.pub eingerichtet waren.

Kurz gesagt, ich wurde aufgrund zu vieler fehlgeschlagener Versuche, die auf SSH-Schlüsseln/-Identitäten basierten, von einem Remote-Server gesperrt, da der Serverzugriff auf einem Kennwort basierte und SSH-Schlüssel/-Identitäten SSH-Schlüssel/-Identitäten sind. Der SSH-Agent hat versucht, alle meiner SSH-Schlüssel abzurufen, was fehlgeschlagen ist, und ich konnte nicht einmal an die Passwortabfrage gelangen.

Das Problem ist, dass ssh-add -A jeden einzelnen SSH-Schlüssel/jede einzelne SSH-Identität willkürlich zum Agenten hinzufügt, auch wenn dies nicht erforderlich ist. wie im Fall von Vagrant-Boxen.

Meine Lösung nach vielen Tests war wie folgt.

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

ssh-add -D

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

eval "$(ssh-agent -s)"

Jetzt wird es komisch und ich bin mir nicht sicher warum. In einigen Fällen können Sie den ~/.ssh/id_rsa.pub-Schlüssel/die Identität wie folgt zum Agenten hinzufügen:

ssh-add ~/.ssh/id_rsa.pub

Geben Sie Ihre Passphrase ein und drücken Sie Return und Sie sollten gut zu gehen sein.

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

ssh-add -K

Wenn das alles funktioniert hat, geben Sie ssh-add -l ein und Sie sollten einen einzigen SSH-Schlüssel/eine einzige SSH-Identität sehen.

Alles gut? Jetzt öffne deinen .bash_profile:

nano ~/.bash_profile

Und füge diese Zeile unten hinzu; kommentiere oder entferne die -A-Version, wenn du das hast:

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

Dadurch kann der SSH-Schlüssel/die SSH-Identität bei jedem Start/Neustart erneut auf den SSH-Agenten geladen werden.

UPDATE: Apple hat jetzt eine UseKeychain-Option zu den offenen SSH-Konfigurationsoptionen hinzugefügt und betrachtet ssh-add -A ebenfalls als eine Lösung.

Ab MacOS Sierra 10.12.2 hat Apple (ich nehme an) eine UseKeychain config-Option für SSH-Konfigurationen hinzugefügt. Das Überprüfen der Manpage (über man ssh_config) 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 als Lösung entweder ssh-add -A zu Ihrem .bash_profile hinzufügt wie in diesem Open Radar-Ticket erläutert oder UseKeychain als eine der Optionen in einem benutzerspezifischen ~/.ssh/config hinzufügt.

3
JakeGould

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

Es gibt einen einzigen Befehl, der dies ausführt (von SSH-Schlüssel-in-MacOS-Sierra-Schlüsselbund ):

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
1
AlecRust

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

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

PubkeyAcceptedKeyTypes=+ssh-dss 
1
Roei Bar Aviv