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

I've OpenSSH 7.6 in Windows 7 zu Testzwecken installiert. SSH-Client & Server arbeiten einfach gut, bis ich versucht, eine meiner AWS EC2 Box von diesem Fenster zugreifen.

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

Was ist mit Windows?

private-key.ppm wird direkt von AWS kopiert und ich vermute, 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:\>

Suchen Sie die Datei im Windows Explorer, klicken Sie mit der rechten Maustaste darauf und wählen Sie "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 wird sich SSH nicht mehr über zu offene Dateien beschweren.

Am Ende sollte es so aussehen:

Kommentare (8)

Schlüssel dürfen nur für den Benutzer zugänglich sein, für den sie bestimmt sind, und nicht für andere Konten, Dienste oder Gruppen.

  • GUI:
    • [Datei] Eigenschaften - Sicherheit - Erweitert
      1. Setzen Sie Owner auf den Benutzer des Schlüssels.
      2. Entfernen Sie alle Benutzer, Gruppen und Dienste, außer dem Benutzer des Schlüssels, unter **Berechtigungseinträge***.
      3. Setzen Sie den Benutzer von key's user auf Volle Kontrolle_


  • CLI:

     :: Variable setzen ::
     set key="C:\Path\to\key"
    
     :: Vererbung aufheben ::
     cmd /c icacls %key% /c /t /vererbung:d
    
     :: Eigentümerschaft auf Besitzer setzen ::
     cmd /c icacls %key% /c /t /gewähren %Benutzername%:F
    
     :: Alle Benutzer entfernen, außer dem Besitzer ::
     cmd /c icacls %key% /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
    
     :: Überprüfen ::
     cmd /c icacls %key%
Kommentare (8)

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

Wenn ich eingebe

where ssh

erhalte ich...

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

Wenn ich ssh -V an beiden Orten 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 folgende Ergebnis 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 selbst, und sonst nichts.

Kommentare (4)