Ich habe meinen privaten SSH-Schlüssel in installiert ~/.ssh/id_rsa
und setzen Sie seine Berechtigungen auf 0600
. Wenn ich mich mit einem SSH-Server verbinde, der meinen privaten Schlüssel in Terminal.app über verwendet ssh
Ein Dialog erscheint und fordert mich auf, mein Passwort einzugeben, um auf das zuzugreifen id_rsa
Datei:
Ich sehe das gleiche Dialogfeld, wenn ich mich mit dem Interarchy GUI-Client mit einem FTP-Server verbinde.
Aktualisieren: Ich sehe dieses Dialogfeld jedes Mal, wenn ich eine Verbindung herstelle, unabhängig davon, ob ich "Kennwort in meinem Schlüsselbund speichern" markiere. Es erscheint zwei weitere Male, wenn auf die Schaltfläche OK geklickt wird, unabhängig davon, was im Kennwortfeld eingegeben wurde.
Wenn ich diese Berechtigungen entspanne, sagen wir 0640
Ich sehe nicht mehr einen Dialog, der mich nach meinem Passwort fragt ssh
bricht mit dem folgenden Fehler ab:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0640 for '/Users/myusername/.ssh/id_rsa' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: /Users/myusername/.ssh/id_rsa
Ich finde den Passwortdialog extrem ärgerlich und ich bin sicher, dass es einen Weg geben muss, diesen Dialog zu beenden, auf den SSH zugreifen muss id_rsa
Datei.
Hinweis: Ich verwende Mac OS X 10.6.8.
quelle
Erster Lauf
ssh-add -K
und überprüfen Sie, ob dies Ihr Problem behebt.Wenn nicht:
Die Datei rsa_id.pub wurde entfernt und eine neue erstellt (muss in ~ / .ssh / sein)
Die gesicherten Berechtigungen wurden sowohl für id_rsa als auch für id_rsa.pub auf 600 festgelegt (muss in ~ / .ssh / liegen):
Lief den folgenden Befehl:
Danach wurde ich nicht mehr aufgefordert, mein privates Schlüsselkennwort anzugeben. Anscheinend wird das Kennwort des privaten Schlüssels tatsächlich an der richtigen Stelle des Schlüsselbunds für OS X abgelegt.
quelle
chmod 600
(statt 644) damit es funktioniertssh-add -K
mein Problem behobenIn meinem Fall
ssh-add -K
Ich habe den Trick nicht gemacht, ich musste den Schlüssel angeben:quelle
-K
Option mehr. Ihre Lösung hat es behoben. Ich frage mich, warum ich das tun musste. Hatte noch nie ein Passwort.-K
Flagge hat für mich am Sierra 10.12.2 gearbeitetFür macOS 10.12 Sierra
ssh-add -K
muss nach jedem Neustart ausgeführt werden. Um dies zu vermeiden, erstellen Sie~/.ssh/config
mit diesem Inhalt.Apple hat hinzugefügt Technote 2449 was erklärt, was passiert ist.
Bearbeiten: Offenbar ist es nicht erforderlich, einen Host und einen Schlüssel anzugeben. Das reicht schon aus.
quelle
AddKeysToAgent
auf der obersten ebene von~/.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, das Dialogfeld gui jedoch vermeiden möchten, können Sie mit ssh-add dem Agenten die Passphrase und dann wie üblich ssh hinzufügen.
Wenn Sie den ssh-agent nicht verwenden möchten und stattdessen eine ssh-Eingabeaufforderung für die Passphrase eingeben möchten, deaktivieren Sie die Umgebungsvariable SSH_AUTH_SOCK.
quelle
ssh-add -K
Ich muss mein Passwort nicht eingeben, um mich zu verbinden, aber die Aufforderung wird angezeigt. Ich lehne es einfach ab.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 Kennwort eingeben zu müssen, haben Sie zwei Möglichkeiten.
Wenn Sie das Kontrollkästchen "Kennwort in meinem Schlüsselbund merken" aktivieren, müssen Sie das Kennwort nicht jedes Mal eingeben. Es wird zusammen mit allen anderen Kennworten im Schlüsselbund gespeichert. Dies ist die empfohlene Option.
Sie können eine private Schlüsseldatei ohne Kennwort erstellen. Sie können Ihre vorhandene private Schlüsseldatei so ändern, dass sie nicht kennwortgeschützt ist (das Ändern des Kennworts wirkt sich nur auf die Schlüsseldatei aus, nicht auf den Schlüssel selbst). Führen Sie von der Befehlszeile aus
ssh -p
, geben Sie die vorhandene Passphrase ein und lassen Sie die neue Passphrase leer. Ein leeres Kennwort ist mit einem Sicherheitsrisiko verbunden: Jeder, der auf Ihre private Schlüsseldatei zugreifen kann (z. B. durch Zugriff auf Ihre Sicherungen), kann diese sofort verwenden.quelle
Wenn Sie Ihren privaten Schlüssel zum Quellverzeichnis ~ / .ssh hinzugefügt haben und ssh-add -K eingegeben haben, um ihn dem Schlüsselbund hinzuzufügen, und Sie haben den Inhalt Ihres öffentlichen Schlüssels in die .ssh / authorised_keys kopiert (für das richtige Konto) Datei auf dem Zielserver wird das Dialogfeld entfernt.
Es ist eine knifflige Kombination aus Dateien, Berechtigungen, Positionen und Befehlen, sodass dies Zeit in Anspruch nehmen kann. Ich würde mich nicht zu einer Schlussfolgerung über Fehler beeilen.
quelle
Ich habe genau das gleiche Problem mit Lion (Mac OS X 10.7). Ich denke es ist ein Fehler ... Wenn die SSH-Authentifizierung ein Kennwort ist, durchläuft der Client zuerst den öffentlichen Schlüssel, was normal ist. Auch wenn Sie beim nächsten Verbindungsaufbau einer neuen SSH-Verbindung die Passphrase im Schlüsselbund speichern möchten (was für die Kennwortauthentifizierung nicht erforderlich ist), werden Sie erneut nach der Passphrase gefragt ...
quelle
Es ist nicht erforderlich, Ihre öffentlichen Schlüssel zu regenerieren. Sie können diese einfach tun zwei Befehle:
Grundsätzlich müssen Sie die Berechtigungen für die öffentliche Schlüsseldatei einschränken und Ihren Schlüssel zum OSX-Authentifizierungsagenten hinzufügen.
quelle
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:
Speichern und gelöst
quelle
Dieses Problem trat auf meinem OS X 10.7.4-System auf, als der ssh-agent verstarb. Ein Neustart hat das Problem behoben. (Sie könnten versuchen, den ssh-agent neu zu starten, aber ich weiß nicht, ob der Schlüsselbund schlau genug ist, um den neuen ssh-agent-Socket aufzunehmen.)
quelle
Stellen Sie sicher, dass ~ / .ssh / chmod 700 ist.
Stellen Sie sicher, dass ~ / .ssh / id * -Dateien beide chmod 600 sind.
Führen Sie / Applications / Utilities / Keychain Access.app aus und reparieren Sie den Schlüsselbund.
Ausloggen. (Neustart wäre keine schreckliche Idee)
Anmeldung
Wenn das Problem weiterhin besteht, verschieben Sie die vorhandenen ~ / .ssh / id * -Dateien auf Ihren Desktop, und versuchen Sie, neue Schlüssel zu generieren
ssh-keygen -t dsa -f ~/.ssh/id_dsa -C [email protected]
und sehen, ob die neuen Schlüssel besser funktionieren.Ich bin auf Lion, aber der IIRC Snow Leopard arbeitete genauso.
ps - wer eine leere ssh-Passphrase vorschlägt, sollte ein Schild tragen, damit andere wissen, dass sie keinen Rat von ihnen annehmen.
quelle
Das erneute Generieren des öffentlichen Schlüssels scheint für mich nicht zu funktionieren (10.8), noch das Erzeugen eines neuen SSH-Schlüssels. Wenn ich beispielsweise git pull nach dem Sperren des Anmelde-Schlüsselbunds ausführen möchte, wird ein Dialogfeld angezeigt, in dem das Kennwort abgefragt wird, anstatt zuerst das Kennwort vom Anmelde-Schlüsselbund abzurufen.
Wenn ich jedoch den ssh-agent zuerst töte, werde ich zur Eingabe des Kennworts für den Login-Schlüsselbund aufgefordert, der dann das SSH-Schlüsselpasswort abruft.
quelle
Ein weiterer interessanter Befund ist, wenn Sie kopieren und; Wenn Sie den Inhalt der PEM-Datei einfügen, kann der Strich möglicherweise am Ende fehlen. Denken Sie also daran, die letzte Zeile als
quelle
Ich musste die folgenden Schritte ausführen, damit es funktioniert.
Der letzte Befehl sollte dann etwa Folgendes ausgeben:
Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.
quelle
Ich hatte das gleiche Problem. Ich habe es scheinbar behoben.
1) Gesichert durch Umbenennen der alten Dateien id_dsa und id_dsa.pub.
2) Führen Sie ein neues Keygen mit einer leeren Passphrase aus.
Arbeitet mit dem Job 'launchctl', der einen Remote-Server überwacht und sich von ssh in einem Terminal anmeldet.
Ich habe eine schnelle Funktion Authme-Funktion in meinem Terminal, da ich Folgendes in meinem .bash_profile habe
Eine schnelle authme remoteserver.com kopiert also den neuen Remote-Schlüssel.
Ich denke, der Fehler hat etwas damit zu tun, dass die Passphrase nicht konvertiert wird (mein alter Snow Leopard hatte überhaupt keine).
Versuchen Sie das und sehen Sie, ob es hilft.
Es dauerte nicht länger als 10 Minuten. Ich habe für immer gegoogelt, um zu sehen, ob es andere Erwähnungen gibt. Diese Seite war die einzige!
Owain
quelle
Ich hatte ein ähnliches Problem. Es stellte sich heraus, dass der private Schlüssel, den ich verwendete, ein falsches Format hatte. Ich habe PuTTY Key Generator auf meiner Win-Maschine verwendet und ssh unter OS X erwartet ein anderes Format - Open SSH-Format.
Es stellte sich heraus, dass das Tool, mit dem ich diesen Schlüssel erstellt hatte (PuTTY Key Generator), die Möglichkeit hatte, meinen Priv-Schlüssel in das für Open SSH erforderliche Format zu konvertieren.
Einfach als:
Die zu speichernde Datei enthält Ihren ursprünglichen privaten Schlüssel im richtigen Format (OpenSSH).
quelle
Bitte stelle sicher, dass:
Dies sollte hoffentlich das Problem lösen.
quelle
Verwenden Sie die PEM-Taste anstelle der PPK-Taste.
quelle