Das Dialogfeld „Kennwort“ wird angezeigt, wenn die Berechtigungen für private SSH-Schlüssel auf 0600 festgelegt sind

Ich habe meinen privaten SSH-Schlüssel in installiert ~/.ssh/id_rsaund seine Berechtigungen auf 0600. Wenn ich mich mit einem SSH-Server verbinde, der meinen privaten Schlüssel in Terminal.app über verwendet ssh, erscheint ein Dialog und fordert mich auf, mein Passwort einzugeben, um auf die id_rsaDatei zuzugreifen:

Geben Sie hier die Bildbeschreibung ein

Ich sehe das gleiche Dialogfeld, wenn ich mit dem Interarchy-GUI-Client eine Verbindung zu einem FTP-Server herstelle.

Update: Ich sehe dieses Dialogfeld jedes Mal, wenn ich eine Verbindung herstelle, unabhängig davon, ob ich „Passwort in meinem Schlüsselbund speichern“ aktiviert habe. Es erscheint zwei weitere Male, wenn auf die Schaltfläche OK geklickt wird, unabhängig davon, was in das Kennwortfeld eingegeben wurde.

Wenn ich diese Berechtigungen z. B. auf lockere, 0640sehe ich keinen Dialog mehr, der mich nach meinem Passwort fragt, sondern sshbricht mit folgendem Fehler ab:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ WARNUNG: UNGESCHÜTZTE PRIVATE KEY-DATEI! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
Berechtigungen 0640 für „/Users/myusername/.ssh/id_rsa“ sind zu offen.
Es wird empfohlen, dass Ihre privaten Schlüsseldateien NICHT für andere zugänglich sind.
Dieser private Schlüssel wird ignoriert.
schlechte Berechtigungen: Schlüssel ignorieren: /Users/myusername/.ssh/id_rsa

Ich finde den Passwortdialog extrem lästig und ich bin sicher, dass es eine Möglichkeit geben muss, diesen Dialog zu schließen, den SSH für den Zugriff auf die id_rsaDatei benötigt.

Hinweis: Ich verwende Mac OS X 10.6.8.

Antworten (19)

Stellen Sie sicher, dass Sie ein entsprechendes id_rsa.puboder id_dsa.pubin Ihrem ~/.sshVerzeichnis haben.

Wenn ich eine hatte id_rsa, aber keine entsprechende id_rsa.pub, hat Mac OS X immer wieder den Dialog geöffnet und sich daran erinnert, dass passowrd in meinem Schlüsselbund nichts bewirkt hat.

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

die entsprechende öffentliche Schlüsseldatei für mich generiert.

Wenn Sie Ihre öffentliche Datei bereits dort hatten (benennen Sie sie in einen anderen Namen um) und den öffentlichen Schlüssel mit dem obigen Befehl erneut generieren, werden Sie feststellen, dass der generierte und der alte nicht gleich sind. Irgendwie haben die älteren Versionen von Mac OS X einen öffentlichen Schlüssel generiert, den Lion nicht mehr mag, das erneute Generieren behebt das.

Für die Neugierigen, der Schlüssel ist genau derselbe, der Teil, der sich ändert, ist, dass es nach dem Schlüssel in der Datei keinen "Kommentar"-Abschnitt mehr gibt.

Diese Lösung mag auf den ersten Blick nicht sehr sinnvoll sein, aber versuchen Sie es. Ich hatte genau das gleiche Problem und es hat es behoben. Ich verwende immer ein Passwort für meine SSH-Schlüssel und das sollten Sie auch.
Diese Lösung hat bei mir funktioniert. Es macht keinen Sinn, aber es funktioniert! (OS X Lion)
Wow, das macht überhaupt keinen Sinn, aber es hat sicher eine Menge seltsames Verhalten auf meinem System korrigiert. Danke.
Für mein ganzes Leben konnte ich mit demselben Problem seit Tagen keine Lösung finden, und dies hat es für mich behoben. Das macht überhaupt keinen Sinn, aber es hat mein Problem behoben! Danke, positiv bewertet.
OMG danke! Funktionierte für mich (Berglöwe und mit SourceTree), diese Dialoge waren so nervig.
Das ergibt keinen Sinn – in gewisser Weise tut es das wahrscheinlich. Der Prozess zum automatischen Hinzufügen von Schlüsseln erwartet wahrscheinlich, dass er den Teil des öffentlichen Schlüssels lesen kann, und schlägt stillschweigend fehl, wenn dies nicht möglich ist.
Wie @AlexRecarey sagte, ich fand es seltsam, tat es aber trotzdem und funktionierte auch für mich!
Ich dachte eigentlich, es wäre IdentitiesOnly yes in meiner Konfiguration, denn als ich es entfernte, begann ssh, ssh-agent zu ehren. Wenn ich das erst vor Stunden gefunden hätte, verdammt! +500!!
Diese Art von willkürlichem schizophrenem Verhalten erklärt weitgehend, warum die meisten Menschen Kryptografie nicht verstehen (oder verwenden), es sei denn, sie ist automatisch (wie https).
Oh, ich habe einfach nicht anders gedacht ;)
@ Chepe77 nein tut es nicht. Die -yOption auf ssh-keygen wird verwendet, um „eine private Datei im OpenSSH-Format zu lesen und einen öffentlichen OpenSSH-Schlüssel auf stdout zu drucken“ – bitte lesen Sie die Manpage für ssh-keygen, bevor Sie solche Warnungen ausgeben. Die Antwort ist richtig.

Führen Sie zuerst aus ssh-add -Kund prüfen Sie, ob dies Ihr Problem behebt.

Wenn nicht:

  • Die Datei rsa_id.pub wurde entfernt und neu erstellt (muss sich in ~/.ssh/ befinden):

    ssh-keygen -y -f id_rsa > id_rsa.pub
    
  • Die sichergestellten Berechtigungen wurden sowohl für id_rsa als auch für id_rsa.pub auf 600 gesetzt (muss sich in ~/.ssh/ befinden):

    chmod 600 id_rsa*
    
  • Habe den folgenden Befehl ausgeführt:

    ssh-add -K
    

Danach wurde ich nicht mehr aufgefordert, mein Private-Key-Passwort einzugeben. Dies scheint das Passwort des privaten Schlüssels tatsächlich an der richtigen Schlüsselbundposition für OS X zu platzieren.

War Wahnsinnig, bis ich auf Ihren Befehl "ssh-add -K" stieß. Ich glaube nicht, wie kompliziert OSX die Dinge gemacht hat. +1000
fwiw, ich musste chmod 600(statt 644) damit es funktioniert
Private Key mit 644 ist kein bueno
ssh-add -Kmein Problem gelöst
Kein Upvoting, bis chmod 644 auf chmod 600 korrigiert ist, das ist unsicher.
ssh-add -Kmein Problem behoben. Danke! Ich bin mir nicht sicher, was es überhaupt daran gehindert hat, zu funktionieren.
Für diejenigen unter Ihnen, die eine alternative (z. B. Homebrew) Version von ssh verwenden:/usr/bin/ssh-add -K ~/.ssh/mykey

In meinem Fall ssh-add -Khat es nicht funktioniert, ich musste den Schlüssel angeben:

ssh-add ~/.ssh/id_rsa
es gibt keine -Kmöglichkeit mehr. Deine Lösung hat es behoben. Ich frage mich, warum ich das tun musste. Hatte noch nie eine Passwortabfrage.
Danke! An diesem Punkt fragte OS X Sierra schließlich nach meinem id_rsa-Passwort.
FWIW, die -KFlagge hat bei mir auf Sierra 10.12.2 funktioniert
Ja. Ich kann bestätigen. -K existiert und behebt das Problem in der neuesten Sierra! Gute Arbeit @nathancahill.

Für macOS 10.12 ssh-add -Kmuss Sierra nach jedem Neustart ausgeführt werden. Um dies zu vermeiden, erstellen Sie ~/.ssh/configmit diesem Inhalt.

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

Apple hat Technote 2449 hinzugefügt , das erklärt, was passiert ist.

Vor macOS Sierra zeigte ssh einen Dialog an, in dem Sie nach Ihrer Passphrase gefragt wurden, und bot die Option an, sie im Schlüsselbund zu speichern. Diese Benutzeroberfläche war vor einiger Zeit veraltet und wurde entfernt.

Bearbeiten: Anscheinend ist die Angabe eines Hosts und Schlüssels nicht erforderlich. Es reicht aus, dies hinzuzufügen.

AddKeysToAgent yes
UseKeychain yes
Das hat bei mir funktioniert. Zuerst habe ich es mit ssh-add -K versucht, aber die Änderung funktionierte nur, bis ich neu gestartet habe.
Ich musste AddKeysToAgentauf die oberste Ebene von setzen ~/.ssh/config.

Sie müssen die Passphrase für den privaten Schlüssel irgendwo eingeben, und OS X verwendet standardmäßig ssh-agent.

Wenn Sie ssh-agent verwenden möchten, aber das GUI-Dialogfeld vermeiden möchten, können Sie ssh-add verwenden, um die Passphrase zum Agenten hinzuzufügen, und dann wie gewohnt ssh.

Wenn Sie ssh-agent nicht verwenden und stattdessen ssh zur Eingabe der Passphrase auffordern möchten, deaktivieren Sie die Umgebungsvariable SSH_AUTH_SOCK.

Danke Alrescha. Wissen Sie, ob es eine Möglichkeit gibt, Ihr privates Schlüsselpasswort dauerhaft im Mac OS X-Schlüsselbund zu speichern (nicht nur für eine einzelne Sitzung)?
Sie können 'ssh-add -K' im Terminal versuchen, aber wenn es einen Fehler gibt, bei dem das Aktivieren des Kontrollkästchens nicht funktioniert, funktioniert dies möglicherweise auch nicht. Ich möchte nicht, dass meine SSH-Passphrasen im Schlüsselbund gespeichert werden, daher habe ich dies nicht getestet.
Mit ssh-add -Kmuss ich mein Passwort nicht eingeben, um eine Verbindung herzustellen, aber die Eingabeaufforderung wird trotzdem angezeigt; Ich verwerfe es einfach.
ssh-add -K ist das, was Sie verwenden, um Ihr Passwort zum Schlüsselbund hinzuzufügen. Wenn Sie Ihr Passwort nicht eingeben, kann es nicht an den Schlüsselbund gehängt werden.
Nachtrag: Sowohl in Lion als auch in Snow Leopard erhalte ich, wenn ich ssh-add -K eingebe, eine Eingabeaufforderung im Terminal – kein Dialogfeld.
Sorry für die Verwirrung. Was ich meinte, ist, nachdem ich ausgeführt ssh-add -Kund mein Passwort eingegeben habe, sehe ich beim nächsten Versuch, eine Verbindung zum fraglichen ssh-Server herzustellen, immer noch eine Mac OS X-Passwort-Eingabeaufforderung.

Wenn Sie die Berechtigungen lockern, wird der Schlüssel ignoriert. Sie werden dadurch nichts gewinnen.

Wenn Sie einen Schlüssel verwenden möchten, ohne jedes Mal ein Passwort eingeben zu müssen, haben Sie zwei Möglichkeiten.

Wenn Sie „Passwort in meinem Schlüsselbund speichern“ aktivieren, müssen Sie das Passwort nicht jedes Mal eingeben: Es wird zusammen mit all Ihren anderen Passwörtern im Schlüsselbund gespeichert. Dies ist die empfohlene Option.

Sie können eine private Schlüsseldatei ohne Passwort erstellen. Sie können Ihre vorhandene private Schlüsseldatei so ändern, dass sie nicht passwortgeschützt ist (das Ändern des Passworts wirkt sich nur auf die Schlüsseldatei aus, nicht auf den Schlüssel selbst). Führen Sie in der Befehlszeile aus ssh -p, geben Sie die vorhandene Passphrase ein und lassen Sie die neue Passphrase leer. Eine leere Passphrase birgt ein Sicherheitsrisiko: Jeder, der auf Ihre private Schlüsseldatei zugreifen kann (z. B. durch Zugriff auf Ihre Backups), kann sie sofort verwenden.

Danke für die Antwort, obwohl ich vergessen habe zu erwähnen, dass das Aktivieren der Option "Passwort in meinem Schlüsselbund speichern" keine Auswirkung hat: Der Dialog wird beim nächsten Verbinden erneut angezeigt. (Die Verwendung einer leeren Passphrase ist für mich keine Option.)
Vorzuschlagen, einen passwortgeschützten Schlüssel durch einen Schlüssel ohne Passwort zu ersetzen, ist wirklich eine schreckliche Idee ...

wenn Sie Ihren privaten Schlüssel zum Quellverzeichnis ~/.ssh hinzugefügt und ssh-add -K eingegeben haben, um ihn zum Schlüsselbund hinzuzufügen, und Sie den Inhalt Ihres öffentlichen Schlüssels in das Verzeichnis .ssh/authorized_keys kopiert haben (für die richtigen account)-Datei auf dem Zielserver verschwindet das Dialogfeld.

Es ist eine knifflige Kombination aus Dateien, Berechtigungen, Speicherorten und Befehlen, sodass es einige Zeit dauern kann. Ich würde nicht zu einer Schlussfolgerung über Fehler eilen.

Ich habe genau das gleiche Problem auf Lion (Mac OS X 10.7). Ich denke, es ist ein Fehler ... Wenn die SSH-Authentifizierung ein Passwort ist, geht der Client zuerst durch den öffentlichen Schlüssel, was normal ist. Auch wenn Sie sich dafür entscheiden, die Passphrase im Schlüsselbund zu speichern (was für die Passwortauthentifizierung nicht erforderlich ist), werden Sie beim nächsten Aufbau einer neuen SSH-Verbindung erneut nach der Passphrase gefragt ...

Ich halte dies auch für einen Fehler, mit Snow Leopard hat alles gut funktioniert, aber jedes Mal, wenn mein Computer aus dem Ruhezustand zurückkehrt, wird das Passwort für den SSH-Schlüssel erneut gefragt, obwohl ich beim letzten Mal, als es gefragt wurde, "remeber it" aktiviert habe! Sehr nervig...

Es sollte keine Notwendigkeit bestehen, Ihre öffentlichen Schlüssel neu zu generieren. Sie können einfach diese beiden Befehle ausführen:

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

Grundsätzlich müssen Sie die Berechtigungen für die öffentliche Schlüsseldatei verschärfen und Ihren Schlüssel zum OSX-Authentifizierungsagenten hinzufügen.

In der neuesten Version von macOS (10.12.2 - Sierra) ist dies eine einfache Lösung. Bearbeiten Sie einfach Ihre ~/.ssh/config und aktivieren Sie die UseKeychain-Option:

Host *
UseKeychain yes

Speichern und gelöst.

Dieses Problem trat auf meinem OS X 10.7.4-System auf, als ssh-agent starb. Ein Neustart hat das Problem behoben. (Sie könnten versuchen, ssh-agent neu zu starten, aber ich weiß nicht, ob der Schlüsselbund schlau genug ist, um den neuen ssh-agent-Socket aufzunehmen.)

Dies ist, was mein Problem auch behoben hat, nachdem ich eine Stunde lang herumgestolpert war.
  1. Stellen Sie sicher, dass ~/.ssh/ chmod 700 ist.

  2. Stellen Sie sicher, dass ~/.ssh/id*-Dateien beide chmod 600 sind.

  3. Führen Sie /Applications/Utilities/Keychain Access.app aus und reparieren Sie den Schlüsselbund.

  4. Ausloggen. (Neustart wäre keine schlechte Idee)

  5. Anmeldung

  6. Wenn das Problem weiterhin besteht, verschieben Sie Ihre vorhandenen ~/.ssh/id*-Dateien auf Ihren Desktop und versuchen Sie, neue Schlüssel mit zu generieren, ssh-keygen -t dsa -f ~/.ssh/id_dsa -C you@youremail.tldund prüfen Sie, ob die neuen Schlüssel besser funktionieren.

Ich bin auf Lion, aber IIRC Snow Leopard funktionierte genauso.

PS - Jeder, der vorschlägt, eine leere SSH-Passphrase zu verwenden, sollte gezwungen werden, ein Schild zu tragen, damit andere wissen, dass sie keinen Rat von ihnen annehmen sollen.

Das erneute Generieren des öffentlichen Schlüssels scheint bei mir nicht zu funktionieren (10.8), ebenso wenig wie das Generieren eines neuen SSH-Schlüssels. Wenn ich zum Beispiel git pull nach dem Sperren des Login-Schlüsselbunds ausführe, erscheint ein Dialogfeld, um das Passwort für den Schlüssel anzufordern, anstatt zuerst zu versuchen, das Passwort aus dem Login-Schlüsselbund abzurufen.

Wenn ich jedoch zuerst ssh-agent beende, werde ich zur Eingabe des Login-Keychain-Passworts aufgefordert, das dann das SSH-Key-Passwort abruft.

Hallo, das sieht eher nach einer separaten Frage als nach einer Antwort auf diese Frage aus. Können Sie als neue Frage erneut posten?

Ein weiterer interessanter Befund ist, dass beim Kopieren und Einfügen des Inhalts der PEM-Datei am Ende möglicherweise der Bindestrich fehlt. Denken Sie also daran, die letzte Zeile wie folgt hinzuzufügen:

-----END RSA PRIVATE KEY-----
Etwas Ähnliches ist, dass beim Einfügen eines SSH-Schlüssels von etwas wie Lastpass alles in eine Zeile eingefügt wird. Dies schien ein Problem für mich zu sein, und nachdem ich den privaten Schlüssel auf Leerzeichen wieder in das richtige Format aufgeteilt hatte, funktionierte es.

Ich musste die folgenden Schritte ausführen, damit es funktioniert.

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub git@github.com

Der letzte Befehl sollte dann so etwas ausgeben:Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.

Ich hatte das gleiche Problem. Ich scheine es damit behoben zu haben.

1) Gesichert durch Umbenennen der Dateien id_dsa und id_dsa.pub in die alten.

2) Führen Sie einen neuen Keygen mit einer leeren Passphrase aus.

Funktioniert mit dem Launchctl-Zeitraum-Job, der einen Remote-Server überwacht und sich von ssh in einem Terminal anmeldet.

Ich habe eine Schnellfunktion authme-Funktion in meinem Terminal, da ich Folgendes in meinem .bash_profile habe

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Also ein schnelles authme remoteserver.com wird den neuen Remote Key kopieren.

Ich denke, der Fehler hat damit zu tun, dass die Passphrase nicht konvertiert wird (mein alter Snow Leopard hatte überhaupt keine).

Probieren Sie das aus und sehen Sie, ob es hilft.

Es hat nicht länger als 10 Minuten gedauert. Ich habe ewig gegoogelt, um zu sehen, ob es noch andere Erwähnungen davon gibt. Diese Seite war die einzige!

Owain.

Die Verwendung einer leeren Passphrase ist für mich leider keine Option

Ich hatte ein ähnliches Problem. Es stellte sich heraus, dass der von mir verwendete private Schlüssel ein falsches Format hatte. Ich habe PuTTY Key Generator auf meinem Win-Rechner verwendet und ssh auf OS X erwartet ein anderes Format - Open SSH-Format.

Es stellte sich heraus, dass das Tool, mit dem ich diesen Schlüssel generierte (PuTTY Key Generator), eine Option hatte, um meinen privaten Schlüssel in das von Open SSH benötigte Format zu konvertieren.

Einfach wie:

  1. Öffnen Sie PuTTY Key Gen
  2. Laden Sie Ihren privaten Schlüssel
  3. Wählen Sie Konvertierungen > OpenSSH-Schlüssel exportieren aus.

Die Datei, die Sie speichern, enthält Ihren ursprünglichen privaten Schlüssel im richtigen (OpenSSH)-Format.

Bitte stelle sicher, dass:

  1. Sie verwenden das PEM-Format für Ihren privaten Schlüssel. Dies liegt daran, dass der Mac den Openssh-Client verwendet, der mit PEM funktioniert. ppk ist das proprietäre Format von Putty und nicht mit openssh kompatibel. Sie können ppk einfach mit putty keygen in pem konvertieren, falls Sie nur ppk haben.
  2. Die Berechtigungen für Ihre PEM-Datei sind 600. Private Schlüssel sollen nur für ihren Besitzer zugänglich sein. Wenn also die Berechtigungen jemand anderem Lesezugriff gewähren, wird dies als Sicherheitsbedrohung angesehen.

Dies sollte das Problem hoffentlich lösen.

Verwenden Sie den .pem-Schlüssel anstelle des .ppk-Schlüssels.

Wir suchen nach langen Antworten, die eine Erklärung und einen Kontext bieten. Geben Sie nicht nur eine einzeilige Antwort; begründen Sie, warum Ihre Antwort richtig ist, idealerweise mit Zitaten. Antworten ohne Erklärungen können entfernt werden.