macOS fragt immer wieder nach meiner SSH-Passphrase, seit ich ein Update auf Sierra durchgeführt habe


588

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?


Ich habe ein ähnliches Verhalten: Früher wurde der Schlüsselringdialog angezeigt, in dem Sie nach dem Kennwort gefragt wurden. Jetzt erhalte ich nur noch die reguläre Eingabeaufforderung für die SSH-Konsole. Die Registrierung eines Hilfsprogramms ist wahrscheinlich weg.
Daniel B

1
Es ist Jahre her, seit ich meine id_rsa generiert habe, und ich habe nie eine Passphrase verwendet und diese verwendet, um in viele Server zu sshen. Habe ich wirklich eine Passphrase drauf oder glaubt Sierra nur, dass ich das sollte? Beachten Sie, dass $ cat ~ / .ssh / id_rsa | head -2 ----- BEGIN RSA PRIVATE KEY ----- Proc-Type: 4, ENCRYPTED
Joe Murray


Wenn Sie Pretzo verwenden und keine dieser Antworten Ihr Problem gelöst hat: Stellen Sie sicher, dass das sshModul in nicht aktiviert ist zpretzorc. Unter macOS ist dies ohnehin nicht erforderlich. Wenn es aktiviert ist, werden Sie auch nach dem Hinzufügen zur Eingabe Ihres Passworts aufgefordert UseKeychain.
Jimothy

1
versuche ssh -v ...
herauszufinden,

Antworten:


1129

In der neuesten Version von macOS (10.12.2) ist dies einfach zu beheben. Bearbeiten Sie einfach Ihre ~/.ssh/configund aktivieren Sie die UseKeychainOption:

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 keine Schlüssel hinzufügen ssh-agent.


Bearbeiten: Möglicherweise müssen Sie Ihre Passphrase noch einmal eingeben. Wenn Sie es nicht wissen, befolgen Sie diese Anweisungen , um es anzuzeigen.


24
Das hat bei mir absolut geklappt. Alles unten scheint komplizierter als dieses Update.
Br.Bill

82
Beachten Sie, dass der Host *Block (fast) immer am Ende Ihrer ~/.ssh/configDatei stehen sollte. Wenn sshnach Einstellungen gesucht wird, wird der erste gefundene Wert verwendet. Wenn Sie also den Platzhalterblock an das Ende setzen, fungiert er als eine Reihe von Standardwerten. Sie können Einstellungen für bestimmte Hosts außer Kraft setzen, indem Sie sie früher in der Datei angeben.
Molomby

6
Das hat auch bei mir funktioniert, aber ich musste die Passphrase einmal richtig eingeben. Es gibt eine andere Antwort , die beschreibt, wie Sie das Kennwort anzeigen können, wenn Sie sich nicht daran erinnern.
FGreg

26
Wenn die Konfigurationsdatei nicht vorhanden ist, können Sie auch eine erstellen und diese hinzufügen.
Wynshaft

6
Sie brauchen die Host *Überschrift nicht. Fügen Sie einfach die einzelne Zeile UseKeychain yesoben an, .ssh/configwenn dies für alle Hosts gelten soll.
SJ26

185

Ich hatte das gleiche problem Der MacOS Sierra-Schlüsselbund fragt ständig nach der Passphrase. Ihre id_rsa sollte aus Sicherheitsgründen mit einer Passphrase verschlüsselt sein. Versuchen Sie dann, es dem Schlüsselbund hinzuzufügenssh-add -K ~/.ssh/id_rsa

Wenn sich Ihr Schlüssel in einem anderen Ordner befindet, ~/.sshersetzen Sie ihn durch den richtigen Ordner.

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


25
Dies funktioniert, scheint aber nicht zu bestehen, wenn ich meinen Computer neu starte. Hat noch jemand das gleiche Problem?
Joshua Paling

1
Ja, das gleiche Problem hier. @ joshua.paling
kingkool68

18
@ joshua.paling, kingkool68 - Apple hat die Möglichkeit entfernt, sich Ihre SSH-Schlüssel während des Neustarts zu merken, um sich an das Mainstream-OpenSSH-Verhalten anzupassen. In dieser Frage finden Sie weitere Möglichkeiten, um dieselbe Funktionalität zu erzielen: apple.stackexchange.com/questions/254468/…
Evan Pon

@EvanPon Aber das funktioniert nicht mit verschlüsselten Schlüsseln, oder?
Konrad Rudolph

2
@KonradRudolph es funktioniert bei mir. Wenn Sie ssh-addmit dieser -AOption anrufen, wird im MacOS-Schlüsselbund nach Kennwörtern für die betreffenden Identitäten gesucht. Ich glaube, es wird Sie auffordern, wenn die Passwörter nicht im Schlüsselbund sind.
Evan Pon

73

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 erhalten. Die Lösung von @jukka-suomela auf dieser Seite funktioniert über Neustarts hinweg. Diese Antwort finden Sie hier:

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


3
Dies ist das einzige, was funktioniert.
cryptic0

5
Bei Verwendung dieser Lösung musste keine .ssh / .config erstellt werden.
Shai

Das hat bei mir funktioniert. Die Hostdatei muss nicht bearbeitet werden. Ich bin in Sierra.
Cchiera

Dies funktionierte für mich unter Mac OS Sierra.
Dayron Gallardo

2
Wie bereits erwähnt, funktioniert dies, bleibt jedoch zwischen Neustarts nicht erhalten. @ jukka-suomelas Lösung funktioniert über Neustarts hinweg.
EasyCo

40

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 jedoch mithilfe der folgenden Schritte 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.

2
Funktioniert nicht Terminal sagt immer noch "schlechte Passphrase"
Jayden Lawson

18

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/nullzu ~ / .bash_profile hinzuzufügen. Jedes Mal, wenn Sie das Terminal öffnen, wird dieser Befehl ausgeführt (der &> /dev/nullTeil 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 unter Speichern von SSH-Schlüsseln im MacOS Sierra-Schlüsselbund beschrieben . Dies beinhaltet die Verwendung von Xcode zum Erstellen der Datei.


Dies scheint auch Apples offizielle Antwort zu sein - siehe openradar.appspot.com/27348363
Nick Maynard,

Die bisher beste Lösung für mich. Ich verwende Mac OSX Sierra (10.12.2).
Zyc

15

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


Bisher hat in keiner der Antworten jemand den Bad configuration option: usekeychainFehler erwähnt, den ich mit UseKeychain erhalte (egal wie groß er ist). Aber ich war die Lage , es durch Entfernen Arbeiten zu bekommen nur diese Zeile und Verlassen AddKeysToAgent und Identity (Sie haben noch die Passphrase zum ersten Mal eingeben). Dies ist mit macOS Sierra 10.12.6.
William Turrell

Dies funktioniert einwandfrei, wenn ich im Terminal bin und den Befehl ssh verwende, aber andere Apps, wie WebStorm, die ihr eigenes Terminal verwenden, nehmen diese Konfiguration erst vor der ersten Verwendung eines Befehls ssh im regulären Terminal vor. dann klappt es überall, irgendwelche vorschläge?
Santiago Arizti

@WilliamTurrell Wenn dies noch geschieht, geben , which sshum sicherzustellen , dass Sie verwenden , /usr/bin/sshund nicht eine Version von Fink oder MacPorts, die unter so etwas wie wäre /usr/local/bin/sshoder/opt/local/bin/ssh
Stefan Lasiewski

7

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

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

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


4
Das ist zwar eine Art Workaround, aber ich denke nicht, dass es das OP-Problem wirklich löst .
Daniel B

Das funktioniert bei mir. @ DanielB, was ist das Problem dabei?
Dag Høidahl

7
@ DagHøidahl Der Schlüssel wird nicht mehr verschlüsselt. Es kann mit normalen Benutzerrechten gestohlen werden, daher sollte die Verschlüsselung unbedingt beachtet werden.
Daniel B

6
Dadurch wird das Kennwort aus dem Schlüssel entfernt, weshalb das Problem des OP behoben wird. Aber ich empfehle dagegen. Das Passwort ist alles, was Leute davon abhält, Ihren Schlüssel zu benutzen, wenn er gestohlen wird. Da Ihr Schlüssel wahrscheinlich Zugriff auf mehrere Systeme gewährt, möchten Sie ihn nicht schwächen.
Martijn Heemels

5

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 den Technote von Apple gelesen und diese Datei 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

4

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.

Eine Lösung, die ich gefunden habe, ist die Ausführung ssh-addmit der -AOption, die dem SSH-Agenten alle bekannten Identitäten hinzufügt, wobei alle in Ihrem Schlüsselbund gespeicherten Passwörter verwendet werden:

ssh-add -A

Das funktioniert jetzt, bleibt aber nach einem Neustart nicht erhalten. Wenn Sie sich also nie wieder darum kümmern möchten, öffnen Sie einfach die ~/.bash_profileDatei 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 ssh-add -AOption für die meisten einfachen Fälle funktionieren sollte, stieß ich kürzlich auf ein Problem, bei dem 6-7 Vagrant-Boxen (die SSH-Schlüssel / -Identitäten für den Zugriff verwenden) auf einem Computer eingerichtet wurden, zusätzlich zu den am häufigsten verwendeten id_rsa.pub.

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 beruhte und SSH-Schlüssel / -Identitäten SSH-Schlüssel / -Identitäten sind. Also hat der SSH-Agent alle meine SSH-Schlüssel ausprobiert , ist fehlgeschlagen und ich konnte nicht einmal zur Passwortabfrage gelangen.

Das Problem ist, dass ssh-add -Ajeder einzelne SSH-Schlüssel / jede einzelne SSH-Identität willkürlich zum Agenten hinzugefügt wird, 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, ssh-add -llöschen Sie sie zunächst 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 ~/.ssh/id_rsa.pubdem Agenten den Schlüssel / die Identität wie folgt hinzufügen :

ssh-add ~/.ssh/id_rsa.pub

Geben Sie Ihre Passphrase ein, drücken ReturnSie und los geht's.

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 geklappt hat, geben ssh-add -lSie ein und Sie sollten einen einzigen SSH-Schlüssel / eine Identität sehen.

Alles gut? Jetzt öffne dein .bash_profile:

nano ~/.bash_profile

Und füge diese Zeile unten hinzu; kommentiere oder entferne die -AVersion, 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 UseKeychainOption zu den offenen SSH-Konfigurationsoptionen hinzugefügt und zieht auch ssh-add -Aeine Lösung in Betracht .

Seit macOS Sierra 10.12.2 hat Apple (ich nehme an) eine UseKeychainKonfigurationsoption für SSH-Konfigurationen hinzugefügt. Das Überprüfen der Manpage (via 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 die Lösung entweder wie in diesem Open Radar-Ticket erläutertssh-add -A zu Ihrer hinzufügt oder als eine der Optionen in einem pro Benutzer hinzufügt ..bash_profile UseKeychain~/.ssh/config


3

Die Antwort von Jukka Suomela ist richtig, aber wenn Sie opensshinstalliert von verwenden homebrew, müssen Sie es auch deinstallieren mit:

brew remove openssh

... um zurück zum Systemstandard zu wechseln openssh, da homebrew keinen UseKeychainssh config-Eintrag unterstützt.


1
Wenn es jemand mit Homebrews möchte,
schick

1

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

Das Hinzufügen der folgenden Zeile in der obersten .ssh/configDatei sowohl auf dem lokalen als auch auf dem entfernten Computer hat bei mir funktioniert.

PubkeyAcceptedKeyTypes=+ssh-dss 

1

Sie benötigen eine .plisthinzugefügte Datei, ~/Library/LaunchAgents/um sie ssh-add -Abei jedem Start von macOS ausführen zu können.

Es gibt einen einzigen Befehl, der dies ausführt (vom 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.