SSH-Schlüssel: "Die Berechtigungen 0644 für 'id_rsa.pub' sind zu offen." auf Mac

261

Ich generiere ein SSH-Schlüsselpaar auf meinem Mac und füge den öffentlichen Schlüssel meinem Ubuntu-Server hinzu (tatsächlich handelt es sich um eine virtuelle Maschine auf meinem Mac). Wenn ich jedoch versuche, mich beim Ubuntu-Server anzumelden, heißt es:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).

Ich habe viele Möglichkeiten ausprobiert, um dies zu lösen, den Schlüsseldateimodus zu ändern, den Ordnermodus zu ändern, als Antwort auf den Stapelüberlauf, aber es funktioniert nicht.
die Schlüsseldateiberechtigung:

vm dir:
drwxr-xr-x   4 tudouya  staff    136  4 29 10:37 vm

key file:
-rw-------  1 tudouya  staff  1679  4 29 10:30 vm_id_rsa
-rw-r--r--  1 tudouya  staff   391  4 29 10:30 vm_id_rsa.pub

Bitte geben Sie mir eine Idee ... ============================================

I. Schreiben Sie die Host-Informationen in ssh_config:

Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

Ich führe den Befehl "ssh -v ubuntuvm" aus, der Folgendes anzeigt:

ssh -v ubuntuvm
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 103: Applying options for *
debug1: /etc/ssh_config line 175: Applying options for ubuntuvm
debug1: Connecting to 10.211.55.17 [10.211.55.17] port 22.
debug1: Connection established.
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:6d:4f:0f:23:51:ac:8e:70:01:ec:0e:62:9e:1c:10
debug1: Host '10.211.55.17' is known and matches the RSA host key.
debug1: Found key in /Users/tudouya/.ssh/known_hosts:54
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 279
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: No more authentication methods to try.
Permission denied (publickey,password).
土豆 丫
quelle
1
Könnten Sie Ihre Frage so bearbeiten, dass sie den spezifischen ssh-Befehl enthält, den Sie ausführen? Wenn die betreffende Schlüsseldatei in der ssh-Konfigurationsdatei angegeben ist, fügen Sie bitte auch die entsprechenden Zeilen aus der Konfigurationsdatei hinzu.
Kenster
Für mich war "schlechte Berechtigungen"
Insign
Ich bin mit diesem Problem konfrontiert, wenn ich -i id_rsa.pubbeim Befehl ssh die Verbindung verwende. Scheint, als würde erzwungen, einen öffentlichen Schlüssel für die ssh-Befehlstruppe zu verwenden, um nach einem Passwort zu fragen (auch wenn die Passphrase leer war, zumindest in meinem Fall)
Diego Andrés Díaz Espinoza

Antworten:

148
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1

Es scheint, dass Sie versuchen, die falsche Schlüsseldatei zu verwenden. Die Datei mit der Erweiterung ".pub" ist die Datei mit dem öffentlichen Schlüssel. Die entsprechende Datei ohne die Erweiterung ".pub" ist die private Schlüsseldatei. Wenn Sie einen SSH-Client ausführen, um eine Verbindung zu einem Remoteserver herzustellen, müssen Sie dem SSH-Client die private Schlüsseldatei bereitstellen.

Sie haben wahrscheinlich eine Zeile in Ihrer .ssh/configDatei (oder /etc/ssh_config), die so aussieht:

IdentityFile .../.ssh/vm/vm_id_rsa.pub

Sie müssen die Erweiterung ".pub" aus dem Dateinamen entfernen:

IdentityFile .../.ssh/vm/vm_id_rsa
Kenster
quelle
Ich hatte dieses Problem mit SQLPro und hatte die public ( .pub) - Datei anstelle der privaten Datei falsch ausgewählt .
Henry
1
Ich habe diesen Fehler bekommen, als ich ssh -i id_ed25519.pubwährend der ssh -i id_ed25519Arbeit gearbeitet habe
Boris
2
Danke hat mich hier gerettet.
Abner
Brillant! Danke dir!
Alliswell
574

Ich schlage vor, Sie tun:

chmod 400 ~ / .ssh / id_rsa

Für mich ist die Arbeit in Ordnung.

Rick Benetti
quelle
33
“Permissions 0644 for 'id_rsa.pub' are too open."und der Schlüssel wurde daher ignoriert. Dies lag wahrscheinlich daran, dass ich die Schlüsseldatei von meinem anderen PC kopiert habe. Durch das Beheben von Berechtigungen wurde das Problem behoben. Vielen Dank!
Parasrish
2
@ xoxn - 1'w3k4n Warum ist das so schlimm? Es ist sinnvoll, wenn Personen ihren Lese- / Schreibzugriff auf diese vertraulichen Dateien kopiert oder auf andere Weise schlecht verwaltet haben, dass sie repariert werden.
Gerard
5
Dies ist kein Klebeband. Wenn Sie Ihre IDs kopiert haben, ist dies sinnvoll.
ALisboa
Arbeitete für mich als Lösung beim Kopieren von SSH-Schlüsseln von einem alten Computer!
Nick
1
Funktioniert auch auf WSL
h-rai
59

Der Schlüssel sollte für den angemeldeten Benutzer lesbar sein.

Versuche dies:

chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub
user3029620
quelle
Mit dem öffentlichen Schlüssel 400 oder 600 erhalte ich ein ungültiges Formatssh-add ~/.ssh/id_rsa.pub
Uhr
53
chmod 400 path/to/filename

Diese Arbeit für mich. Wenn ich diese Datei erstellt habe, kann ich eine Verbindung zu meiner EC2-Instanz herstellen

Muhammad Wajahat Anwar
quelle
Es ist mir ein Vergnügen :) Danke
Muhammad Wajahat Anwar
2
Dies ist die Antwort
Mladen Danic
23

Nachdem ich den folgenden Befehl ausgeführt habe, funktioniert es für mich

sudo chmod 600 /path/to/my/key.pem
Ashok
quelle
20

In meinem Fall war es eine PEM-Datei. Es stellt sich heraus, dass dies auch gut ist. Die Berechtigungen der Datei wurden geändert und es hat funktioniert.

chmod 400 ~/.ssh/dev-shared.pem

Vielen Dank für alle, die oben geholfen haben.

Vaibhav Tripathi
quelle
13

Wenn sich die Schlüssel im Verzeichnis ~ / .ssh befinden, verwenden Sie

chmod 400 ~ / .ssh / id_rsa

Wenn sich die Schlüssel in einem anderen Verzeichnis befinden, verwenden Sie

chmod 400 Verzeichnispfad / id_rsa

Das hat bei mir funktioniert.

Anirban
quelle
2
Wie verbessert dies die anderen Antworten?
Nico Haase
2
Es ist nicht der Pub-Schlüssel, der geschützt werden muss, sondern der private
Picarus
Der private Schlüssel muss geschützt werden.
Bashan
Für mich geht das. Ich denke, chmod 400 ~/.ssh/id_rsadas hast du mit @Anirban gemeint. Wie oben angegeben: Die Datei mit der Erweiterung ".pub" ist die Datei mit dem öffentlichen Schlüssel. Die entsprechende Datei ohne die Erweiterung ".pub" ist die private Schlüsseldatei. Wir müssen den privaten schützen.
Naveen Kumar
Antwort bearbeitet. Es sollte der private Schlüssel sein.
Anirban
12

Viele ähnliche Antworten, aber keine Erklärungen ...

Der Fehler wird ausgelöst, weil die Berechtigungen für Dateien mit privatem Schlüssel zu offen sind. Es ist ein Sicherheitsrisiko.

Ändern Sie die Berechtigungen für die private Schlüsseldatei so, dass sie minimal sind (vom Eigentümer schreibgeschützt).

  1. Besitzer wechseln chown <unix-name> <private-key-file>
  2. Legen Sie minimale Berechtigungen fest (schreibgeschützt für den Dateibesitzer). chmod 400 <private-key-file>
James Wierzba
quelle
7

Was mich betrifft , von der Standardmodus id_rsaist 600, was bedeutet , readableundwritable .

Nachdem ich diese Datei in ein Git-Repo verschoben und von einem anderen PC abgerufen habe, wird manchmal der Modus der privaten Schlüsseldatei aktiviert -rw-r--r-- .

Wenn ich das Repo mit ssh ziehe, nachdem ich die private Schlüsseldatei angegeben habe, ist es fehlgeschlagen und hat bei Ihnen Warnungen ausgelöst. Es folgt mein Skript.

ssh-agent bash -c "ssh-add $PATH_OF_RSA/id_rsa; \
git pull [email protected]:someone/somerepo.git "

Ich behebe dieses Problem, indem ich den Modus auf ändere 600.

chmod 600 $PATH_TO_RSA/id_rsa
W.Perrin
quelle
6

Wenn Sie die Berechtigung 400 erteilen, wird der Schlüssel privat und für Unbekannte nicht zugänglich. Es macht den Schlüssel als geschützten.

chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Himanshi Singh
quelle
2

chmod 400 /etc/ssh/* funktioniert bei mir.

Michal Šípek
quelle
3
Sie können dies tun, solange Sie feststellen, dass Sie alle Schlüssel im Verzeichnis betreffen.
J2N
2

Wenn Sie eine .ssh / config-Datei verwenden, versuchen Sie es

chmod 0400 .ssh/config

dann:

chmod 0400 .ssh/<<KEYFILE_PATH>>
Shell_Leko
quelle
2

Diejenigen, die chmod 400 id_rsa.pub vorgeschlagen haben, klangen überhaupt nicht richtig. Es war durchaus möglich, dass op den Pub-Schlüssel anstelle des privaten Schlüssels für ssh verwendete.

Es könnte also so einfach sein ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@host, es zu beheben.

--- Update ---

In diesem Artikel https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 erfahren Sie, wie Sie den SSH-Schlüssel einrichten

Qiulang
quelle
Könnte sein, obwohl in meinem Fall, als ich nach diesem Problem suchte und zur Antwort kam, der chmod 400 das war, was ich brauchte, um mein Problem zu lösen. Vielen Dank an alle, die geholfen haben!
J2N
1

Lauf einfach unten zu deinem Pem

sudo chmod 600 /path/to/my/key.pem 
Pravin
quelle
-8

Ich habe das entfernt .pub fileund es hat funktioniert.

user2942483
quelle
1
Das Entfernen der .pub-Datei ist nicht erforderlich. Dies bedeutet auch, dass Sie keine Aufzeichnung des öffentlichen Schlüssels auf Ihrem Computer zur späteren Verwendung haben.
Henry
1
Wenn Sie über OpenSSH verfügen, können Sie die fehlende öffentliche Schlüsseldatei mithilfe von aus dem privaten Schlüssel neu generieren ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key. Es ist also nicht wirklich verloren. :)
dannysauer