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 dabei um eine virtuelle Maschine auf meinem Mac), aber wenn ich versuche, mich auf dem 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 das Problem zu lösen, den Schlüsseldateimodus zu ändern, den Ordnermodus zu ändern, als Antwort auf stackoverflow, 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 ... ======================================= ==
Ich schreibe 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).
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 public key. Die entsprechende Datei ohne die Erweiterung ".pub" ist die Datei private key. Wenn Sie einen SSH-Client ausführen, um eine Verbindung zu einem Remote-Server herzustellen, müssen Sie die private Schlüsseldatei dem SSH-Client zur Verfügung stellen.
Sie haben wahrscheinlich eine Zeile in Ihrer .ssh/config
-Datei (oder /etc/ssh_config
), die wie folgt aussieht:
IdentityFile .../.ssh/vm/vm_id_rsa.pub
Sie müssen die Erweiterung ".pub" aus dem Dateinamen entfernen:
IdentityFile .../.ssh/vm/vm_id_rsa
Ich schlage vor, Sie machen:
chmod 400 ~/.ssh/id_rsa
Für mich ist die Arbeit gut.
Der Schlüssel sollte für den angemeldeten Benutzer lesbar sein.
Versuche dies:
cd ~/.ssh
chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub
chmod 400 path/to/filename
Diese Arbeit für mich. Wenn ich diese Datei erstellt habe, kann ich mich mit meiner EC2-Instanz verbinden
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.
In meinem Fall war es eine PEM-Datei. Es hat sich herausgestellt, dass auch das gut ist. Geänderte Berechtigungen der Datei und es hat funktioniert.
chmod 400 ~/.ssh/dev-shared.pem
Vielen Dank für alle, die oben geholfen haben.
Nach dem Ausführen des Befehls unten funktioniert es für mich
Sudo chmod 600 /path/to/my/key.pem
Der Standardmodus von id_rsa
ist 600
, was readable
und writable
bedeutet.
Nachdem ich diese Datei in ein Git-Repo-Gerät übertragen und von einem anderen PC gezogen habe, wird der Modus der privaten Schlüsseldatei manchmal -rw-r--r--
.
Wenn ich das Repo mit ssh nach dem Festlegen der privaten Schlüsseldatei ziehe, schlug es fehl und forderte die gleichen Warnungen mit Ihnen auf. Folgendes ist 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 in 600
ändere.
chmod 600 $PATH_TO_RSA/id_rsa
Diejenigen, die chmod 400 id_rsa.pub vorschlugen, 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 wie ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) [email protected]
, das Problem 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
chmod 400 /etc/ssh/*
arbeitet für mich.
Wenn Sie eine .ssh/config -Datei verwenden, versuchen Sie es mit
chmod 0400 .ssh/config
dann:
chmod 0400 .ssh/<<KEYFILE_PATH>>
durch die Erlaubnis 400 wird der Schlüssel privat und für jemanden nicht zugänglich. Es macht den Schlüssel als einen geschützten.
chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Viele ähnliche Antworten, aber keine Erklärungen ...
Der Fehler wird ausgelöst, weil die Dateiberechtigungen für den privaten Schlüssel zu offen sind. Es ist ein Sicherheitsrisiko.
Ändern Sie die Berechtigungen für die private Schlüsseldatei auf minimal (schreibgeschützt nur vom Eigentümer).
chown <unix-name> <private-key-file>
chmod 400 <private-key-file>
Lauf einfach runter zu deinem Pem
Sudo chmod 600 /path/to/my/key.pem