web-dev-qa-db-fra.com

Windows SSH: les autorisations pour "clé privée" sont trop ouvertes

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

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

Qu'en est-il des fenêtres?

private-key.ppm est copié directement à partir d'AWS et j'imagine que l'autorisation aussi.

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

C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>


C:\>ssh [email protected] -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
[email protected]: Permission denied (publickey).

C:\>
C:\>
C:\>ssh [email protected] -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
[email protected]: Permission denied (publickey).

C:\>
50
Sabrina

Vous localisez le fichier dans l'Explorateur Windows, faites un clic droit dessus, puis sélectionnez "Propriétés". Accédez à l'onglet "Sécurité" et cliquez sur "Avancé".

Changez le propriétaire pour vous, désactivez l'héritage et supprimez toutes les autorisations. Puis accordez-vous le "Contrôle total" et sauvegardez les permissions. Maintenant, SSH ne se plaindra plus de la permission de fichier trop ouverte.

Cela devrait ressembler à ceci:

 enter image description here

72
iBug

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éfinir Propriétaire à l'utilisateur de la clé
      2. Supprimer tous les utilisateurs, groupes et services, à l'exception de l'utilisateur de la clé , sous Entrées d'autorisation
      3. Définir l'utilisateur de la clé sur Contrôle total


  • CLI:

    :: Set Variable ::
    set key="C:\Path\to\key"
    
    :: Remove Inheritance ::
    cmd /c icacls %key% /c /t /inheritance:d
    
    :: Set Ownership to Owner ::
    cmd /c icacls %key% /c /t /grant %username%:F
    
    :: Remove All Users, except for Owner ::
    cmd /c icacls %key%  /c /t /remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users
    
    :: Verify ::
    cmd /c icacls %key%
    
10
JW0914

En plus de la réponse fournie par ibug. Depuis que j'utilisais le système Ubuntu dans Windows pour exécuter la commande ssh. Cela ne fonctionnait toujours pas. Donc j'ai fait

Sudo ssh ...

et puis ça a marché

5
Parv Sharma

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

Si je tape

where ssh

Je reçois...

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

Lorsque je lance ssh -V dans les deux emplacements, je reçois

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, cela fonctionne correctement et ne se plaint pas des autorisations. Toutefois, si vous exécutez la même ligne de commande, en utilisant l'ancienne installation de SSH, cela revient.

Load key "t:\\mykeys\\rich-private.ppk": invalid format
[email protected]: Permission denied (publickey).

ps. les autorisations sur le fichier ne sont qu'un accès complet pour moi, et rien d'autre.

4
Rich S

Vous avez besoin de deux choses:

1) Désactiver l'héritage  enter image description here

2) convertir les autorisations héritées en autorisations explicites  enter image description here

3) Supprimer le groupe d'utilisateurs  enter image description here

4) Vous allez vous retrouver sans que les utilisateurs puissent accéder aux fichiers privés, cela devrait suffire pour ajouter id_rsa.  enter image description here

3
Artur Mustafin