2018-02-18 05:10:44 +0000 2018-02-18 05:10:44 +0000
122
122

Windows SSH: Berechtigungen für 'private-key' sind zu offen

Ich habe OpenSSH 7.6 in Windows 7 zu Testzwecken installiert. SSH-Client und -Server funktionieren einwandfrei, bis ich versucht habe, von diesem Fenster aus auf eine meiner AWS EC2-Boxen zuzugreifen.

Es scheint, dass ich die Berechtigung für die private Schlüsseldatei ändern muss. Dies kann unter Unix/Linux leicht mit dem Befehl chmod durchgeführt werden.

Was ist mit Windows?

private-key.ppm wird direkt von AWS kopiert und ich schätze, die Berechtigung auch.

C:\>ssh -V
OpenSSH_7.6p1, LibreSSL 2.5.3

C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>

C:\>ssh ubuntu@192.168.0.1 -i private-key.ppk
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'private-key.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "private-key.ppk": bad permissions
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
ubuntu@192.168.0.1: Permission denied (publickey).

C:\>

Antworten (14)

150
150
150
2018-02-18 08:57:27 +0000

Sie suchen die Datei im Windows Explorer, klicken mit der rechten Maustaste darauf und wählen “Eigenschaften”. Navigieren Sie zur Registerkarte “Sicherheit” und klicken Sie auf “Erweitert”.

Ändern Sie den Besitzer auf Sie, deaktivieren Sie die Vererbung und löschen Sie alle Berechtigungen. Gewähren Sie sich dann “Volle Kontrolle” und speichern Sie die Berechtigungen. Jetzt beschwert sich SSH nicht mehr über eine zu offene Dateiberechtigung.

Am Ende sollte es so aussehen:

29
29
29
2018-06-08 15:34:57 +0000

Schlüssel dürfen nur dem Benutzer zugänglich sein, für den sie bestimmt sind, und keinem anderen Konto, Dienst oder einer Gruppe.

  • GUI:
  • [Datei] Eigenschaften - Sicherheit - Erweitert
  • Setzen Sie Besitzer auf den Benutzer des Schlüssels
  • Entfernen Sie alle Benutzer, Gruppen und Dienste, außer dem Benutzer des Schlüssels, unter Berechtigungseinträge
  • Setzen Sie den Benutzer des Schlüssels auf Full Control

  • CLI:

15
15
15
2018-09-08 13:27:16 +0000

Zusätzlich zu der von ibug gegebenen Antwort. Da ich das Ubuntu-System innerhalb von Windows verwendet habe, um den ssh-Befehl auszuführen. Es funktionierte immer noch nicht. Also habe ich

sudo ssh ...

gemacht und dann hat es funktioniert

5
5
5
2018-04-05 11:53:43 +0000

Ich hatte das gleiche Problem, und es scheint mit der SSH-Version zusammenzuhängen, die Sie verwenden.

Wenn ich

where ssh

eintippe, bekomme ich…

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe

Wenn ich ssh -V in beiden Verzeichnissen ausführe, erhalte ich

OpenSSH_7.5p1, without OpenSSL
OpenSSH_7.3p1, OpenSSL 1.0.2k 26 Jan 2017

…bzw.

Wenn ich also ssh aus dem git/bin-Verzeichnis ausführe, funktioniert es einwandfrei und beschwert sich nicht über die Berechtigungen, aber wenn ich dieselbe Befehlszeile mit der früheren SSH-Installation ausführe, kommt das hier zurück.

Load key "t:\mykeys\rich-private.ppk": invalid format
banana@127.0.0.127: Permission denied (publickey).

ps. Die Berechtigungen für die Datei sind nur Vollzugriff für mich und sonst nichts.

5
5
5
2019-10-04 13:28:46 +0000

Verwenden Sie den folgenden Befehl auf Ihrer Taste, er funktioniert unter Windows

icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"
4
4
4
2019-09-06 18:17:27 +0000

Ich hatte ein ähnliches Problem, aber ich war auf der Arbeit und habe nicht die Möglichkeit, die Dateiberechtigungen auf meinem Arbeitsrechner zu ändern. Installieren Sie WSL und kopieren Sie Ihren Schlüssel in das versteckte ssh-Verzeichnis in WSL:

cp <path to your key> ~/.ssh/<name of your key>

Jetzt sollten Sie die Berechtigungen normal ändern können.

sudo chmod 600 ~/.ssh/<your key's name>

Dann ssh mit WSL:

ssh -i ~/.ssh/<name of your key> <username>@<ip address>
3
3
3
2019-02-16 21:58:34 +0000
2
2
2
2019-08-12 12:39:01 +0000

Sie können icacls unter Windows anstelle von chmod verwenden, um die Dateiberechtigung anzupassen. Um dem aktuellen Benutzer Leserechte zu geben und alles andere zu entfernen,

icacls <file name> /inheritance:r
icacls <file name> /grant:r "%username%":"(R)"
1
1
1
2019-10-03 21:07:46 +0000

Dies ist nur eine geskriptete Version der CLI-Antwort von @JW0914, also bewerten Sie ihn zuallererst hoch. Außerdem ist es mein erstes PowerShell-Skript, daher sind Vorschläge willkommen.

# DO the following in powerhsell if not already done:
# Set-ExecutionPolicy RemoteSigned

# NOTE: edit the path in this command if needed
$sshFiles=Get-ChildItem -Path C:\DevContainerHome\.ssh -Force

$sshFiles | % {
  $key = $_
  & icacls $key /c /t /inheritance:d
  & icacls $key /c /t /grant %username%:F
  & icacls $key /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
}

# Verify:
$sshFiles | % {
  icacls $_
}
1
1
1
2019-11-28 14:45:28 +0000

Eine einzelne Zeile in CMD könnte den Trick machen (wie hier beschrieben: https://serverfault.com/a/883338/550334 ), d.h. das Hinzufügen des Schlüssels von stdin anstelle des Änderns der Permissons:

cat /path/to/permission_file | ssh-add -k

Um zu prüfen, ob der Schlüssel hinzugefügt wurde:

ssh-add -l
0
0
0
2019-10-29 04:30:11 +0000

Verwenden Sie Mingw-w64.

Infos: http://mingw-w64.org/doku.php

Download mit Git für Windows, oder direkt.

Hier verfügbar: https://github.com/mirror/mingw-w64

git clone https://github.com/mirror/mingw-w64

Es hat auch andere nützliche Linux-Befehle wie tar und gzip.

0
0
0
2019-11-26 06:10:29 +0000

Ich bin ein Windows-Benutzer, benutze die Bash von Windows und habe alle Schritte befolgt, um die Berechtigung mit der Windows-GUI einzustellen, und es funktioniert immer noch nicht und beschwert sich:

Permissions 0555 for 'my_ssh.pem' are too open.
It is required that your private key files are NOT accessible by others.

Ich habe sudo am Anfang des ssh-Befehls hinzugefügt und es funktioniert einfach. Ich hoffe, dies ist für andere hilfreich.

0
0
0
2020-02-24 23:03:22 +0000

Ich konnte aufgrund von Berechtigungsproblemen keine dieser Antworten für mich zum Laufen bringen, also werde ich meine Lösung teilen:

  1. Gehen Sie zu C:\Users\UserName.ssh

  2. Kopieren und fügen Sie die Datei id_rsa

  3. Benennen Sie sie in etwas anderes um, z. B. example

  4. Öffnen Sie die umbenannte Datei example und ersetzen Sie den Schlüssel durch Ihren eigenen privaten Schlüssel

  5. Wechseln Sie mit cd in dieses Verzeichnis

  6. Machen Sie ssh -i example example@127.0.0.1 und geben Sie Ihr Passwort ein.

-1
-1
-1
2019-02-08 14:20:33 +0000

Antwort von iBug funktioniert einwandfrei! Sie können dem folgen und dieses Problem loswerden.

Aber es gibt ein paar Dinge, die geklärt werden müssen, da ich Probleme beim Einrichten von Berechtigungen hatte und es ein paar Minuten dauerte, bis ich das Problem herausgefunden hatte!

Wenn man der Antwort von iBug folgt, entfernt man alle Berechtigungen, aber wie stellt man die Vollzugriffsberechtigung für sich selbst ein? da bin ich zuerst hängen geblieben, da ich nicht wusste, wie man das macht.

Nachdem Sie die Vererbung deaktiviert haben, können Sie alle erlaubten Benutzer oder Gruppen löschen.

Wenn Sie damit fertig sind,

klicken Sie auf Add und geben Sie dann Set a Principal und System und Administrators in das Feld unten ein und klicken Sie dann auf your email addredd.

Es wird der Name geladen, wenn der Benutzer existiert. Klicken Sie dann auf check names > Typ OK > Grundlegende Berechtigungen Allow > Full Control

Damit wird die Vollzugriffsberechtigung für SYSTEM, Administratoren und Ihren Benutzer eingerichtet.

Versuchen Sie danach, ssh mit diesem Schlüssel zu verwenden. Das Problem sollte jetzt gelöst sein.

Ich hatte dasselbe Problem und habe es mit dieser Methode gelöst. Wenn es einen Benutzer oder eine Gruppe mit diesem Namen gibt, wird diese geladen.

-Screenshots- Berechtigungseinträge Einen Principal auswählen/ Benutzer oder Gruppen auswählen