it-swarm.com.de

Ubuntu unter Windows 10 - SSH “Die Berechtigungen xxxx für den privaten Schlüssel sind zu offen

Ich habe eine .pem-Datei auf der lokalen Festplatte C "c/private-key.pem" und einen Softlink dazu auf dem Ubuntu-Subsystem "~/.ssh/private-key.pem ->/mnt/c/private- key.pem "

Und wenn ich versuche, eine entfernte Maschine vom Ubuntu-Subsystem zu entfernen, habe ich:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/artur/.ssh/private-key.pem": bad permissions
Permission denied (publickey).

Es wurde nach dem 1803-Update für Windows gestartet.

Ich habe versucht, chmod 400 für den Schlüssel auf Laufwerk C und im Ordner ./ssh auf dem Subsystem zu verwenden. Ich habe versucht, den Eigentümer nur für mich festzulegen und alle anderen Benutzer aus dem Sicherheitsbereich unter Windows für diesen Dateischlüssel zu entfernen. Aber ich habe die ganze Zeit "Permissions XXXX for '/home/artur/.ssh/private-key.pem' are too open" or "Permission denied".

Kann mir jemand helfen und erklären, wie Schlüsselberechtigungen auf Windows- und Ubuntu-Subsystemen konfiguriert werden sollten?

11
Artur Cherniak

Lösung, die für mich in Windows WSL funktioniert (ohne den Dateimodus zu ändern):

Sudo ssh -i keyfile <user>@ip
7
anand

Kopieren Sie den SSH-Schlüssel in Ihr WSL-Verzeichnis ~/.ssh, da ein SSH-Schlüssel mit anderen Berechtigungen als 600/400 den Schlüssel gefährdet.

  • Stellen Sie nach dem Kopieren des Schlüssels sicher, dass die EOLs in LF geändert wurden.

    • Es gibt verschiedene Möglichkeiten, dies zu tun, vom Atom-Texteditor bis zu CLI-Lösungen wie dos2unix, unix2dos usw.
  • Lesen Sie die Antwort von @ simpleuser, um zu verstehen, warum Berechtigungen nicht über Windows geändert werden können. Hierzu muss der Schlüssel in das Verzeichnis ~/.ssh der WSL kopiert werden

4
JW0914

Ich lese zwischen den Zeilen und gehe davon aus, dass Sie ein Linux-Subsystem in Windows 10 verwenden. Wenn Sie die Windows-Datei von C:\in das Linux-Dateisystem in $ HOME/.ssh verlinkt haben, lauten die Berechtigungen der tatsächlichen Datei Immer noch unter der Kontrolle von Windows, und die Berechtigungen, die Ihnen im Linux-Fenster angezeigt werden, entsprechen am besten den Windows-Berechtigungen. Sie können die Berechtigungen für die Windows-Dateien in/mnt/c unter Linux nicht ändern. In diesem FAQ von Microsoft wird erläutert, wie Dateien in den beiden überlappenden Dateisystemen behandelt werden.

Die Datei, für die Sie die Berechtigung ändern müssen, ist die Datei, auf die der Symlink verweist, dh die Datei in/mnt/c

Es scheint nicht möglich zu sein, nur Benutzern Zugriff auf eine Windows-Datei zu gewähren. Selbst wenn Sie die Vererbung von Berechtigungen für eine Datei deaktivieren und nur Ihren eigenen Benutzern Leseberechtigungen erteilen, werden die Linux-Berechtigungen weiterhin als -r - r - r - angezeigt, sodass sie für .ssh nicht verwendet werden können

Die einzige Möglichkeit scheint darin zu bestehen, die Datei von Windows nach Linux zu kopieren. Dann können Sie chmod verwenden und darauf chown anwenden.

3
simpleuser