Ich habe meinen privaten SSH-Schlüssel in installiert ~/.ssh/id_rsa
und 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_rsa
Datei zuzugreifen:
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, 0640
sehe ich keinen Dialog mehr, der mich nach meinem Passwort fragt, sondern ssh
bricht 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_rsa
Datei benötigt.
Hinweis: Ich verwende Mac OS X 10.6.8.
Stellen Sie sicher, dass Sie ein entsprechendes id_rsa.pub
oder id_dsa.pub
in Ihrem ~/.ssh
Verzeichnis 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.
Führen Sie zuerst aus ssh-add -K
und 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.
chmod 600
(statt 644) damit es funktioniertssh-add -K
mein Problem gelöstssh-add -K
mein Problem behoben. Danke! Ich bin mir nicht sicher, was es überhaupt daran gehindert hat, zu funktionieren./usr/bin/ssh-add -K ~/.ssh/mykey
In meinem Fall ssh-add -K
hat es nicht funktioniert, ich musste den Schlüssel angeben:
ssh-add ~/.ssh/id_rsa
-K
möglichkeit mehr. Deine Lösung hat es behoben. Ich frage mich, warum ich das tun musste. Hatte noch nie eine Passwortabfrage.-K
Flagge hat bei mir auf Sierra 10.12.2 funktioniertFür macOS 10.12 ssh-add -K
muss Sierra nach jedem Neustart ausgeführt werden. Um dies zu vermeiden, erstellen Sie ~/.ssh/config
mit 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
AddKeysToAgent
auf 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.
ssh-add -K
muss ich mein Passwort nicht eingeben, um eine Verbindung herzustellen, aber die Eingabeaufforderung wird trotzdem angezeigt; Ich verwerfe es einfach.ssh-add -K
und 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.
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 ...
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.)
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 schlechte Idee)
Anmeldung
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.tld
und 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.
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-----
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.
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:
Die Datei, die Sie speichern, enthält Ihren ursprünglichen privaten Schlüssel im richtigen (OpenSSH)-Format.
Bitte stelle sicher, dass:
Dies sollte das Problem hoffentlich lösen.
Verwenden Sie den .pem-Schlüssel anstelle des .ppk-Schlüssels.
Alex Recarey
bbonamin
Warren Pena
Danny Engländer
Sebastian Sastre
zick
malvim
Lukas
Fixee
Janaka R. Rajapaksha
Jan C.
-y
Option 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.