Windows SSH : les autorisations pour 'private-key&#39 ; sont trop ouvertes

J'ai installé OpenSSH 7.6 sous Windows 7 à des fins de test. Le client et le serveur SSH fonctionnent parfaitement jusqu'à ce que j'essaie d'accéder à une de mes boîtes AWS EC2 à partir de cette fenêtre.

Il semble que je doive changer la permission sur le fichier de la clé privée. Cela peut être fait facilement sur unix/linux avec la commande chmod.

Qu'en est-il de Windows ?

private-key.ppm est copié directement depuis AWS et je suppose que la permission aussi.

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:\>

Localisez le fichier dans l'Explorateur Windows, cliquez dessus avec le bouton droit de la souris et sélectionnez "Propriétés". Naviguez jusqu'à l'onglet "Security&quot ; et cliquez sur "Advanced&quot ;.

Changez le propriétaire en vous, désactivez l'héritage et supprimez toutes les permissions. Puis accordez-vous le "contrôle total" et enregistrez les autorisations. Désormais, SSH ne se plaindra plus d'une autorisation de fichier trop ouverte.

Au final, cela devrait ressembler à ceci :

[!entrer la description de l'image ici][1]][1]

[1] : https://i.stack.imgur.com/coCbX.gif

Commentaires (8)

Les clés ne doivent être accessibles qu'à l'utilisateur auquel elles sont destinées et à aucun autre compte, service ou groupe.

  • GUI:
    • [Fichier] Propriétés - Sécurité - Avancé
      1. Définissez Owner comme l'utilisateur de la clé.
      2. Supprimez tous les utilisateurs, groupes et services, sauf l'utilisateur de la clé, sous Permission Entries.
      3. Définissez l'utilisateur de la clé comme Full Control.


  • CLI:


    langage : lang-powershell -->

     : : Set Variable : :
     set key="C:\Path\to\key&quot ;
    
     : : Supprimer l'héritage : :
     cmd /c icacls %key% /c /t /inheritance:d
    
     : : Mettre la propriété sur Propriétaire : :
     cmd /c icacls %key% /c /t /grant %username%:F
    
     : : Supprimer tous les utilisateurs, sauf le propriétaire : :
     cmd /c icacls %key% /c /t /remove Administrator "Authenticated Users&quot ; BUILTIN\Administrators BUILTIN Everyone System Users
    
     : : Vérifier : :
     cmd /c icacls %key%
Commentaires (8)

J'ai eu le même problème, et il semble qu'il soit lié à la version de SSH que vous exécutez.

Si je tape

where ssh

J'obtiens...

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

Lorsque j'exécute ssh -V dans les deux emplacements, j'obtiens

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

...respectivement

Ainsi, lorsque j'exécute ssh à partir du répertoire git/bin, il fonctionne bien et ne se plaint pas des permissions, mais en exécutant la même ligne de commande, en utilisant l'ancienne installation de SSH, il revient avec ceci.

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

ps. les permissions sur le fichier sont juste un accès complet pour moi-même, et rien d'autre.

Commentaires (4)