339 votes

Windows SSH : Les permissions pour 'private-key' 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 ce Windows.

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 chmod commandement.

Et pour Windows ?

private-key.ppm est copié directement d'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:\>

0 votes

Avez-vous essayé de modifier l'ACL ?

3 votes

Votre clé privée se trouve-t-elle réellement dans C:\le chemin de la racine ? Je comprends pourquoi il se plaint, car les éléments se trouvant dans C:\ sont généralement accessibles à tous. Avez-vous essayé de la déplacer dans un dossier auquel vous seul, en tant qu'utilisateur, avez accès (ex. C:\Users\username\desktop ) et voir si le message apparaît toujours ?

0 votes

@Darius, oui c'est le cas. Lorsque vous copiez un fichier d'unix/linux vers Windows, la permission est également copiée. J'ai besoin de changer cela mais je ne sais pas comment le faire sous Windows. Cela peut être fait facilement sur unix/linux avec la commande chmod.

411voto

iBug Points 8506

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 "Sécurité" et cliquez sur "Avancé".

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

Ça devrait ressembler à ça :

enter image description here

103voto

JW0914 Points 5592

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. Propriétaire : L'utilisateur de la clé
    2. Entrées de permission : Supprimez tout sauf l'utilisateur de la clé
    3. Définir l'utilisateur de la clé comme Contrôle total
  • Cmd :

    ::# Set Key File Variable:
        Set Key="%UserProfile%\.ssh\id_rsa"
    
    ::# Remove Inheritance:
        Icacls %Key% /c /t /Inheritance:d
    
    ::# Set Ownership to Owner:
        :: # Key's within %UserProfile%:
             Icacls %Key% /c /t /Grant %UserName%:F
    
        :: # Key's outside of %UserProfile%:
             TakeOwn /F %Key%
             Icacls %Key% /c /t /Grant:r %UserName%:F
    
    ::# Remove All Users, except for Owner:
        Icacls %Key% /c /t /Remove:g "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
    
    ::# Verify:
        Icacls %Key%
    
    ::# Remove Variable:
        set "Key="
  • PowerShell :

    # Set Key File Variable:
      New-Variable -Name Key -Value "$env:UserProfile\.ssh\id_rsa"
    
    # Remove Inheritance:
      Icacls $Key /c /t /Inheritance:d
    
    # Set Ownership to Owner:
      # Key's within $env:UserProfile:
        Icacls $Key /c /t /Grant ${env:UserName}:F
    
       # Key's outside of $env:UserProfile:
         TakeOwn /F $Key
         Icacls $Key /c /t /Grant:r ${env:UserName}:F
    
    # Remove All Users, except for Owner:
      Icacls $Key /c /t /Remove:g Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
    
    # Verify:
      Icacls $Key
    
    # Remove Variable:
      Remove-Variable -Name Key

54voto

Parv Sharma Points 663

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

sudo ssh ...

et puis ça a marché

41voto

Adam Davies Points 745

J'ai eu un problème similaire mais j'étais au travail et je n'ai pas la possibilité de modifier les autorisations de fichiers sur mon ordinateur professionnel. Ce que vous devez faire, c'est installer WSL puis copiez votre clé dans le répertoire caché ssh de WSL :

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

Maintenant, vous devriez être en mesure de modifier les permissions normalement.

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

Puis ssh en utilisant WSL :

ssh -i ~/.ssh/<name of your key> <username>@<ip address>

18voto

Artur Mustafin Points 334

Vous devez juste faire au moins quatre choses :

  1. Désactiver l'héritage

enter image description here

  1. Convertir les permissions héritées en permissions explicites

enter image description here

  1. Supprimer le groupe d'utilisateurs

enter image description here

  1. Vous obtiendrez le résultat suivant : aucun utilisateur ne peut accéder aux fichiers privés, cela devrait être suffisant pour ajouter id_rsa.

enter image description here

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X