Frage Mac OS fragt meine ssh-Passphrase seit ich auf Sierra aktualisiert habe


Es erinnerte mich an die Passphrase, aber jetzt frage ich es jedes Mal.

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 repariert.

Wie kann ich MacOS dazu bringen, sich an meine Passphrase zu erinnern?


500
2017-09-22 09:21


Ursprung


Ich habe ein ähnliches Verhalten: Früher erschien der Schlüsselring-Dialog, um nach dem Passwort zu fragen, jetzt bekomme ich nur die normale SSH-Konsolen-Eingabeaufforderung. Einige Hilfsprogramm Registrierung ist wahrscheinlich weg. - Daniel B
Es ist Jahre her, dass ich meine id_rsa generierte und ich habe noch nie eine Passphrase verwendet, um diese auf vielen Servern zu verwenden. Habe ich wirklich eine Passphrase, oder ist es nur, dass Sierra denkt, ich sollte? Beachten Sie, dass $ cat ~ / .ssh / id_rsa | Kopf -2 ----- BEGIN RSA PRIVATE KEY ----- Proc-Typ: 4, VERSCHLÜSSELT - Joe Murray
Duplikat von apple.stackexchange.com/q/254468/62697 - Cœur
@erwan, du scheinst hier aktiv zu sein. Löst die Antwort unten Ihr Problem? - tedder42
Lösen irgendwelche der Antworten Ihr Problem? Wenn ja, solltest du darüber nachdenken, es zu akzeptieren. - Shafik Yaghmour


Antworten:


In der neuesten Version von macOS (10.12.2) ist dies leicht zu beheben. Editiere einfach deine ~/.ssh/config und aktivieren Sie die UseKeychain Möglichkeit:

Host *
    UseKeychain yes

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


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


983
2017-12-19 12:04



Das hat absolut für mich funktioniert. Alles unten scheint komplizierter als diese Lösung. - Br.Bill
Beachten Sie das Host * Block sollte (fast) immer an der Unterseite Ihres platziert werden ~/.ssh/config Datei. Wann ssh sucht nach Einstellungen, die es verwendet zuerst Wert, den es findet. Wenn Sie also den Platzhalterblock am Ende platzieren, fungiert er als eine Reihe von Standardwerten. Sie können Einstellungen für bestimmte Hosts überschreiben, indem Sie sie früher in der Datei angeben. - Molomby
Das funktionierte auch für mich, aber ich musste die Passphrase einmal richtig eingeben. Es gibt eine andere Antwort Darin wird beschrieben, wie Sie das Kennwort anzeigen können, wenn Sie sich nicht daran erinnern. - FGreg
Wenn die Konfigurationsdatei nicht existiert, wird auch die Erstellung und das Hinzufügen einer Konfigurationsdatei funktionieren. - wynshaft
Du brauchst das nicht Host * Überschrift. Hängen Sie einfach die einzelne Zeile an UseKeychain yes an der Spitze deines .ssh/config wenn Sie möchten, dass dies für alle Hosts gilt. - sj26


Ich hatte das gleiche Problem. MacOS Sierra Keychain fragt nach der Passphrase. Ihr id_rsa sollte zur Sicherheit mit einem Passwort verschlüsselt werden. Dann versuche es dem Schlüsselbund hinzuzufügen ssh-add -K ~/.ssh/id_rsa

Wenn sich Ihr Schlüssel in einem anderen Ordner befindet als ~/.ssh dann ersetzen Sie mit dem richtigen Ordner.

Keychain kennt jetzt deinen ssh-Schlüssel und hoffentlich funktioniert alles jetzt (meins)


164
2017-09-23 12:53



Dies funktioniert, scheint aber nicht zu bestehen, wenn ich meinen Computer neu starte. Hat noch jemand das gleiche Problem? - joshua.paling
Ja, das gleiche Problem hier. @ joshua.paling - kingkool68
@ joshua.paling, kingkool68 - Apple hat die Fähigkeit, sich Ihre SSH-Schlüssel während des Neustarts zu merken, entfernt, um dem Mainstream-Verhalten von OpenSSH zu entsprechen. In dieser Frage finden Sie weitere Möglichkeiten zum Erreichen der gleichen Funktionalität: apple.stackexchange.com/questions/254468/ ... - Evan Pon
@EvanPon Aber das wird nicht mit verschlüsselten Schlüsseln funktionieren, oder? - Konrad Rudolph
@KonradRudolph es funktioniert für mich. Berufung ssh-add mit dem -A Die Option sucht im MacOS-Schlüsselbund nach Passwörtern für die betreffenden Identitäten. Ich glaube, es wird Sie auffordern, wenn die Passwörter nicht im Schlüsselbund sind. - Evan Pon


Dies behebt mein ähnliches Problem:

/usr/bin/ssh-add -K

Dies speichert Passphrasen in Ihrem Schlüsselbund.

Aktualisieren (Danke @EasyCo): Dies funktioniert, bleibt jedoch nicht zwischen Neustarts bestehen. @ jukka-suomelas Lösung auf dieser Seite tut Arbeiten über Neustarts hinweg. Sie können diese Antwort hier finden:

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


63
2017-10-09 14:39



Das ist das einzige, was funktioniert. - cryptic0
Ich musste .ssh / .config nicht erstellen, wenn Sie diese Lösung verwenden. - Shai
Das hat für mich funktioniert. Keine Notwendigkeit, die Host-Datei zu bearbeiten. Ich bin in Sierra. - cchiera
Dies funktionierte für mich auf Mac OS Sierra. - Dayron Gallardo
Wie bereits erwähnt, funktioniert das nicht, aber es bleibt zwischen Neustarts nicht bestehen. @ jukka-suomelas Lösung funktioniert über Neustarts hinweg. - EasyCo


Ich musste nur einmal die richtige Passphrase eingeben und es begann zu arbeiten. Das Problem war, dass ich mich nicht an meine ursprüngliche SSH-Passphrase erinnern konnte, aber ich habe sie wiederhergestellt, indem ich folgte diese Schritte von Github:

  • 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-Zugriffsdialog In der unteren linken Ecke wählen Sie Passwort anzeigen.
  • Sie werden nach Ihrem Administratorkennwort gefragt. Geben Sie es in das Dialogfeld "Schlüsselbund-Zugriff" ein.
  • Ihr Passwort wird angezeigt.

38
2017-10-29 17:16



Funktioniert nicht. Terminal sagt immer noch "schlechte Passphrase" - Jayden Lawson


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

Zwei Lösungen haben für mich funktioniert. Eine besteht darin, den Befehl hinzuzufügen ssh-add -A &> /dev/null zu ~ / .bash_profile. Jedes Mal, wenn Sie das Terminal öffnen, wird dieser Befehl ausgeführt (der &> /dev/null Teil sendet die Ausgabe des Befehls die Datei / dev / null).

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


18
2017-09-27 14:40



Dies scheint auch Apples offizielle Antwort zu sein - siehe openradar.appspot.com/27348363 - Nick Maynard
Die beste Lösung bis jetzt für mich. Ich benutze Mac OSX Sierra (10.12.2). - zyc


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

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

Genommen von: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Siehe auch: https://apple.stackexchange.com/a/264974/3810


13
2017-12-16 06:14



Bis jetzt, in keiner der Antworten, hat jemand das erwähnt Bad configuration option: usekeychain Fehler, den ich mit UseKeychain bekomme (aber es ist groß geschrieben). Aber ich war Es kann nur funktionieren, indem nur diese Zeile entfernt wird und AddKeysToAgent und IdentityFile verlassen werden (Sie müssen die Passphrase beim ersten Mal eingeben). Dies ist mit macOS Sierra 10.12.6. - William Turrell
Das 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 nicht vor, bis ich zum ersten Mal einen SSH-Befehl im regulären Terminal verwende. dann funktioniert es überall, irgendwelche Vorschläge? - santiago arizti
@WilliamTurrell Wenn das immer noch passiert, tippe which ssh um sicherzustellen, dass Sie verwenden /usr/bin/ssh und keine Version von Fink oder MacPorts, die unter sowas stehen würde /usr/local/bin/ssh oder /opt/local/bin/ssh - Stefan Lasiewski


Heute Morgen hatte ich das selbe Problem wie du, nachdem du nach Sierra gegangen bist. In meinem Fall, der id_rsa Datei wurde verschlüsselt und nach der Entschlüsselung funktionierte es wie ein Zauber.

  1. Überprüfen Sie, ob Ihre id_rsa Datei wird mit dem folgenden Befehl verschlüsselt: cat ~/.ssh/id_rsa | head -2
  2. Wenn die zweite Zeile sagt Proc-Type: 4,ENCRYPTEDEs ist verschlüsselt und Sie könnten versuchen, es zu entschlüsseln
  3. Wichtig: Erstellen Sie eine Sicherungskopie Ihres Originals 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 ursprünglichen Schlüssel (rm ~/.ssh/id_rsa) und ersetze es durch das entschlüsselte: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

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


7
2017-09-22 10:58



Obwohl das eine Art Workaround ist, denke ich das nicht wirklich löst das OP-Problem. - Daniel B
Das funktioniert für mich. @DanielB, was ist das Problem damit? - Dag Høidahl
@ DagHøidahl Der Schlüssel wird nicht mehr verschlüsselt. Es kann mit regelmäßigen Benutzerrechten gestohlen werden, so ist die Verschlüsselung eine starke SOLL. - Daniel B
Dadurch wird das Kennwort aus dem Schlüssel entfernt, weshalb es das Problem des OP umgeht. Aber ich empfehle das Gegenteil. Das Passwort ist alles, was Menschen davon abhält, Ihren Schlüssel zu benutzen, wenn er gestohlen wird. Da Ihr Schlüssel wahrscheinlich Zugriff auf mehrere Systeme ermöglicht, möchten Sie ihn nicht schwächen. - Martijn Heemels


Ich hatte dieses Problem auch bei der Bereitstellung von Code mit Capistrano. Sehr frustrierend. Hier sind zwei Methoden, die ich kenne, um mit diesem Problem umzugehen.

Methode 1: Hinzufügen alles bekannt Schlüssel zum SSH-Agenten.

Also eine Lösung, die ich gefunden habe, ist zu laufen ssh-add mit dem -A option - fügt dem SSH-Agenten alle bekannten Identitäten hinzu, indem er alle in Ihrem Schlüsselbund gespeicherten Passphrasen verwendet.

ssh-add -A

Jetzt funktioniert es, aber es wird nicht über Neustarts hinweg bestehen. Also, wenn Sie sich nie wieder darum kümmern wollen, öffnen Sie einfach Ihre Benutzer ~/.bash_profile Datei so:

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 gut sein!

Methode 2: Hinzufügen Nur SSH-Schlüssel, die sich im Schlüsselbund befinden zu dem Agenten.

Also während der ssh-add -A Option sollte in den meisten grundlegenden Fällen funktionieren, Ich stieß kürzlich auf ein Problem, wo ich 6-7 Vagrant-Boxen hatte (die SSH-Schlüssel / Identitäten für den Zugriff verwendet) Setup auf einem Computer auf dem üblicheren id_rsa.pub an Ort und Stelle.

Lange Rede, kurzer Sinn: Ich wurde aufgrund von zu vielen fehlgeschlagenen Versuchen auf Basis von SSH-Schlüsseln / Identitäten von einem Remote-Server ausgeschlossen, da der Serverzugriff auf einem Passwort basierte und SSH-Schlüssel / Identitäten SSH-Schlüssel / Identitäten sind. Also der SSH-Agent hat es versucht alle meiner SSH-Schlüssel, fehlgeschlagen und ich konnte nicht einmal zur Passwortabfrage kommen.

Das Problem ist, dass ssh-add -A fügt nur willkürlich jeden einzelnen SSH-Schlüssel / jede Identität, die Sie haben, dem Agenten hinzu, selbst wenn es nicht notwendig ist; wie im Fall von Vagrant-Boxen.

Meine Lösung nach vielen Tests war wie folgt.

Erstens, wenn Sie Ihrem Agenten mehr SSH-Schlüssel / Identitäten hinzugefügt haben, als Sie benötigen - wie mit angezeigt ssh-add -l dann lösche sie alle wie folgt vom Agenten:

ssh-add -D

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

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 / Identität zum Agenten so:

ssh-add ~/.ssh/id_rsa.pub

Tippen Sie Ihre Passphrase ein, drücken Sie Rückkehr und du solltest gut gehen.

Aber in anderen Fällen genügt es, das auszuführen, um den Schlüssel / die Identität hinzuzufügen:

ssh-add -K

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

Alles gut? Jetzt öffne dein .bash_profile:

nano ~/.bash_profile

Und füge diese Zeile unten hinzu. kommentieren oder entfernen Sie die -AVersion, wenn Sie das haben:

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

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

UPDATE: Apple hat jetzt ein UseKeychain Option zu den offenen SSH-Konfigurationsoptionen und berücksichtigt ssh-add -A eine Lösung auch.

Ab Mac OS Sierra 10.12.2 hat Apple (nehme ich an) ein hinzugefügt UseKeychain Konfigurationsoption für SSH-Konfigurationen. Überprüfen der Manpage (über man ssh_config) zeigt folgende Info:

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 auf Apple hinausläuft, sieht die Lösung als entweder hinzufügen ssh-add -A zu deinem .bash_profile  wie in diesem Open Radar Ticket erklärt oder hinzufügen UseKeychain als eine der Optionen in einem pro Benutzer ~/.ssh/config.


3
2018-01-02 00:05





Jukka Suomelaist es Antworten ist richtig, aber wenn Sie verwenden openssh installiert von homebrew, dann müssen Sie es auch deinstallieren mit:

brew remove openssh

... zurück zum Systemstandard openssh, weil Homebrews nicht unterstützt UseKeychain SSH-Konfigurationseintrag


3
2018-01-28 08:58



Wenn jemand es mit Homebrews will, ping mich hier: github.com/rdp/homebrew-openssh-gssapi - rogerdpack


Ich habe alle vorgeschlagenen Lösungen ausprobiert, aber ich habe kein Schlüsselbund in meinem Mac installiert.

Hinzufügen zur folgenden Zeile oben .ssh/config Datei auf der lokalen und der Remote-Maschine arbeitete für mich.

PubkeyAcceptedKeyTypes=+ssh-dss 

1
2018-01-01 23:56





Du brauchst ein .plist Datei hinzugefügt zu ~/Library/LaunchAgents/ zu rennen ssh-add -A bei jedem Start von macOS.

Es gibt einen einzigen Befehl, der das tut (von SSH-Schlüssel-in-MacOS-Sierra-Schlüsselbund) welches ist:

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
2017-12-10 21:04