Das Kennwort-Dialogfeld wird angezeigt, wenn die privaten SSH-Schlüsselberechtigungen auf 0600 eingestellt sind

71

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 sshEin Dialog erscheint und fordert mich auf, mein Passwort einzugeben, um auf das zuzugreifen id_rsa Datei:

enter image description here

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 0640Ich 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.

titaniumdecoy
quelle

Antworten:

70

Stellen Sie sicher, dass Sie einen entsprechenden haben id_rsa.pub oder id_dsa.pub in deiner ~/.ssh Verzeichnis.

Als ich einen hatte id_rsa aber kein entsprechender id_rsa.pub, Mac OS X öffnet den Dialog und speichert das Kennwort in meinem Schlüsselbund.

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 (umbenennen) und den öffentlichen Schlüssel mit dem obigen Befehl erneut generieren, werden Sie feststellen, dass die generierte und die alte nicht identisch sind. Irgendwie haben ältere Versionen von Mac OS X einen öffentlichen Schlüssel generiert, den Lion nicht mehr mag.

Für Neugierige ist der Schlüssel genau derselbe. Der Teil, der sich ändert, besteht darin, dass nach dem Schlüssel in der Datei keine "Kommentare" mehr vorhanden sind.

Constantine Sapuntzakis
quelle
2
Diese Lösung macht auf den ersten Blick vielleicht nicht viel Sinn, aber probieren Sie es aus. Ich hatte genau das gleiche Problem und es wurde behoben. ich immer Verwenden Sie ein Kennwort für meine SSH-Schlüssel und Sie sollten auch.
Alex Recarey
3
Diese Lösung hat für mich funktioniert. Es macht keinen Sinn, aber es funktioniert! (OS X Lion)
bruno077
2
Wow, das macht überhaupt keinen Sinn, aber es hat sicher eine Menge seltsames Verhalten auf meinem System korrigiert. Vielen Dank.
Warren Pena
2
Für das Leben von mir war ich seit Tagen nicht in der Lage, mit dem gleichen Problem eine Lösung zu finden, und das hat es für mich behoben. Das macht überhaupt keinen Sinn, aber es hat mein Problem behoben! Vielen Dank.
Danny Englander
OMG danke! Für mich gearbeitet (Berglöwe und mit SourceTree), waren diese Dialoge so nervig.
Sebastian Sastre
89

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)

    ssh-keygen -y -f id_rsa > id_rsa.pub
    
  • Die gesicherten Berechtigungen wurden sowohl für id_rsa als auch für id_rsa.pub auf 600 festgelegt (muss in ~ / .ssh / liegen):

    chmod 600 id_rsa*
    
  • Lief den folgenden Befehl:

    ssh-add -K
    

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.

Reed
quelle
6
War Wahnsinn, bis ich auf Ihren Befehl "ssh-add -K" gestoßen bin. Ich glaube nicht, wie kompliziert OSX die Dinge gemacht hat. +1000
eduncan911
4
fwiw, das musste ich chmod 600 (statt 644) damit es funktioniert
kangax
1
Privater Schlüssel mit 644 ist kein Bueno
xtian
15
ssh-add -K mein Problem behoben
Spechal
2
Erst wenn chmod 644 auf chmod 600 korrigiert wurde, ist dies nicht sicher.
Tomáš Kafka
20

In meinem Fall ssh-add -K Ich habe den Trick nicht gemacht, ich musste den Schlüssel angeben:

ssh-add ~/.ssh/id_rsa
nathancahill
quelle
es gibt kein -K Option mehr. Ihre Lösung hat es behoben. Ich frage mich, warum ich das tun musste. Hatte noch nie ein Passwort.
DannyRe
Vielen Dank! An diesem Punkt hat OS X Sierra schließlich nach meinem id_rsa-Passwort gefragt.
Tomáš Kafka
2
FWIW, die -K Flagge hat für mich am Sierra 10.12.2 gearbeitet
Chris Wagner
Ja. Ich kann bestätigen. -K existiert und behebt das Problem in der neuesten Sierra! Gute Arbeit @nathancahill.
Matt Komarnicki
16

Fü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.

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

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

Vor macOS Sierra bot ssh ein Dialogfeld an, in dem Sie nach Ihrer Passphrase gefragt werden, und bietet die Option an, sie im Schlüsselbund zu speichern. Diese Benutzeroberfläche wurde vor einiger Zeit nicht mehr unterstützt und wurde entfernt.

Bearbeiten: Offenbar ist es nicht erforderlich, einen Host und einen Schlüssel anzugeben. Das reicht schon aus.

AddKeysToAgent yes
UseKeychain yes
orkoden
quelle
Das hat bei mir funktioniert. Zuerst habe ich ssh-add -K ausprobiert, aber die Änderung funktionierte nur bis zum Neustart.
Gandalf458
Ich musste setzen AddKeysToAgent auf der obersten ebene von ~/.ssh/config.
Radon Rosborough
12

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.

zzz
quelle
Danke, Alrescha. Wissen Sie, ob es eine Möglichkeit gibt, Ihr Kennwort für den privaten Schlüssel dauerhaft im Mac OS X-Schlüsselbund zu speichern (nicht nur für eine einzelne Sitzung)?
titaniumdecoy
3
Sie können 'ssh-add -K' in Terminal ausprobieren. Wenn jedoch ein Fehler auftritt, wenn das Kontrollkästchen nicht funktioniert, funktioniert dies möglicherweise ebenfalls nicht. Ich möchte nicht, dass meine SSH-Passphrasen im Schlüsselbund gespeichert sind, daher habe ich dies nicht getestet.
zzz
Mit ssh-add -K Ich muss mein Passwort nicht eingeben, um mich zu verbinden, aber die Aufforderung wird angezeigt. Ich lehne es einfach ab.
titaniumdecoy
3
Mit ssh-add -K fügen Sie Ihr Kennwort zum Schlüsselbund hinzu. Wenn Sie Ihr Kennwort nicht eingeben, kann es nicht in den Schlüsselbund eingefügt werden.
zzz
1
Nachtrag: Wenn ich sowohl in Lion als auch in Snow Leopard ssh-add -K eingebe, erhalte ich eine Aufforderung in Terminal - nicht in einem Dialogfeld.
zzz
8

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.

Gilles
quelle
Vielen Dank für die Antwort, obwohl ich eines vergessen habe zu erwähnen - das Aktivieren der Option "Kennwort in meinem Schlüsselbund speichern" hat keine Auswirkungen: Das Dialogfeld wird beim nächsten Verbindungsaufbau erneut angezeigt. (Die Verwendung einer leeren Passphrase ist für mich keine Option.)
titaniumdecoy
3
Es ist wirklich eine schreckliche Idee, einen passwortgeschützten Schlüssel durch einen Schlüssel ohne Passwort zu ersetzen.
Schmurfy
5

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.

David Griffis
quelle
3

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

Stefan
quelle
1
Ich halte dies auch für einen Fehler, alles funktionierte gut mit Schneeleoparden, aber jedes Mal, wenn mein Computer aus dem Schlaf zurückkehrt, wird das SSH-Schlüsselkennwort erneut abgefragt, obwohl ich beim letzten Mal die Option "Erinnern" ausgewählt habe. Sehr nervig...
Schmurfy
3

Es ist nicht erforderlich, Ihre öffentlichen Schlüssel zu regenerieren. Sie können diese einfach tun zwei Befehle:

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

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

rouble
quelle
3

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

Ricardo Mendes
quelle
2

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

Troy J. Farrell
quelle
Das ist, was auch mein Problem gelöst hat, nachdem ich eine Stunde herumgestummelt hatte.
DannyRe
2
  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 schreckliche Idee)

  5. Anmeldung

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

TJ Luoma
quelle
1

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.

blarf
quelle
Hallo, das sieht nach einer separaten Frage aus und nicht nach einer Antwort auf diese Frage. Kannst du eine neue Frage erneut posten?
Scot
1

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

-----END RSA PRIVATE KEY-----
Fang
quelle
Etwas Ähnliches ist, dass beim Einfügen eines SSH-Schlüssels von etwas wie Lastpass alle in eine Zeile eingefügt werden. Dies schien für mich ein Problem zu sein, und nachdem der private Schlüssel auf Leerzeichen wieder in das richtige Format aufgeteilt wurde, funktionierte er.
Cameron Gagnon
1

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 [email protected]

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

netbrain
quelle
0

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

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

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

user9563
quelle
Die Verwendung einer leeren Passphrase ist für mich leider keine Option
titaniumdecoy
0

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:

  1. Öffnen Sie PuTTY Key
  2. Laden Sie Ihren privaten Schlüssel
  3. Konvertierungen auswählen & gt; Exportieren Sie den OpenSSH-Schlüssel.

Die zu speichernde Datei enthält Ihren ursprünglichen privaten Schlüssel im richtigen Format (OpenSSH).

Greg
quelle
0

Bitte stelle sicher, dass:

  1. Sie verwenden das Pem-Format für Ihren privaten Schlüssel. Dies ist darauf zurückzuführen, dass Mac den openssh-Client verwendet, der mit Pem arbeitet. ppk ist puttys proprietäres format und ist nicht mit openssh kompatibel. Sie können leicht konvertieren Sie ppk in pem mit putty keygen, falls Sie nur ppk haben.
  2. Die Berechtigungen für Ihre PEM-Datei sind 600. Private Schlüssel sind nur dazu gedacht, nur ihrem Besitzer zugänglich zu sein. Wenn also die Berechtigungen einem anderen Lesezugriff gewähren, wird dies als Sicherheitsbedrohung betrachtet.

Dies sollte hoffentlich das Problem lösen.

Sasidhar Sekar
quelle
-1

Verwenden Sie die PEM-Taste anstelle der PPK-Taste.

Abhi
quelle
1
Wir suchen nach langen Antworten, die Erklärungen und Kontext bieten. Geben Sie nicht nur eine einzeilige Antwort. Erklären Sie, warum Ihre Antwort richtig ist, idealerweise mit Zitaten. Antworten, die keine Erklärungen enthalten, werden möglicherweise entfernt.
Tetsujin