web-dev-qa-db-fra.com

Windows CHMOD 600

J'essaie de me connecter à Amazon EC2 à l'aide d'OpenSSH dans Windows, mais je dois définir les autorisations de mon fichier de clés.

Quel est l'équivalent Windows de CHMOD 600?

J'ai beaucoup recherché sur Google et trouvé uniquement des blogs.

EDIT: Windows 7, en utilisant DOS.

35
Austin Richardson

Je me rends compte que c'est un peu vieux mais je viens de trouver la solution pour moi-même dans Windows 7. Et il semble que cette question ne soit pas résolue. J'ai eu toutes les mêmes erreurs, y compris Cygwin missing cygintl-2.dll sur chmod comme vous l'avez noté dans les commentaires.

Après des recherches approfondies et sans trouver de réponses, j'ai couru:

C:\Users\mztriz\.ssh>ssh -v

OpenSSH_3.8.1p1, OpenSSL 0.9.7d 17 mars 2004 utilisation: ssh [-1246AaCfghkNnqsTtVvXxY] [-b bind_address] [-c cipher_spec] [-D port] [-e escape_char] [-F configfile] [-i identity_file] [ -L port: Host: hostport] [-l login_name] [-m mac_spec] [-o option] [-p port] [-R port: Host: hostport] [user @] hostname [commande]

Comme vous pouvez le voir, la version d'OpenSSH que j'utilisais était assez obsolète. Cependant, je ne le savais pas, car une recherche rapide sur Google de OpenSSH for Windows renvoie cette ancienne version.

Après avoir examiné les versions, j'ai trouvé OpenSSH pour Windows 6.9p1-1 dans la section des téléchargements de ce site Web.

Cette nouvelle version d'OpenSSH semble résoudre tous les problèmes que vous mentionnez.

27
에이바

Modifiez les autorisations afin que:

  • Le fichier de clé n'hérite pas du conteneur
  • Vous (le propriétaire) avez un accès complet
  • Supprimer les entrées d'autorisation pour tout autre utilisateur (par exemple, SYSTEM, Administrateur)
  • Ajoutez une entrée pour un utilisateur spécial Tout le monde et modifiez les autorisations de cet utilisateur pour Refuser toutes les autorisations:
    • Cliquez avec le bouton droit sur le fichier dans l'Explorateur Windows et choisissez Propriétés> Sécurité> Avancé, pour obtenir la boîte de dialogue Paramètres de sécurité avancés.
    • Cliquez sur l'onglet Autorisations, puis sur Modifier les autorisations.
    • Cliquez sur Ajouter, entrez Tout le monde dans le champ du nom de l'objet, cliquez sur Vérifier les noms, puis sur OK.
    • Dans la boîte de dialogue Entrée d'autorisation, cochez la case dans la colonne Refuser pour Contrôle total.
    • Cliquez sur OK dans chaque boîte de dialogue pour revenir en arrière et fermer la boîte de dialogue des propriétés du fichier.

Scp va maintenant lire les autorisations 0400 et sera content. Ish.

8
user2309219

J'ai le même problème. La solution, qui a fonctionné, a été de définir le mode de compatibilité de ssh.exe sur Windows XP SP3.

6
Ralfeus

Faites un clic droit sur le fichier/répertoire, sélectionnez Propriétés puis Sécurité. Cliquez sur Avancé, puis sur Modifier. Décochez "Héritable" et choisissez "Supprimer" dans la boîte de dialogue. Supprimez toutes les autorisations explicites restantes, ajoutez une autorisation "Accès complet" à votre nom d'utilisateur.

6
Erik

Pour unix et OSX

Tout simplement:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Pour les fenêtres

Si le fichier est un lien symbolique Windows (NTFS), ce qui précède ne fonctionnera pas. Vous devez en faire un fichier régulier. Je ne sais pas pourquoi.

Si vous n'avez pas openssh ou cygwin, utilisez chocolatey pour l'installer facilement en utilisant chocolatey .

choco install cyg-get

Ouvrez le terminal Cygwin qui a été installé avec chocolatey et exécuté (notez que ssh-keygen crée de nouvelles clés):

cyg-get install openssh
ssh-keygen
cd ~/.ssh && Explorer.exe .

Vérifiez que les clés sont là (ou remplacez-les par les clés que vous voulez), puis dans Cygwin Shell:

chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/

Ou pour les rares cas où vous utilisez (et avez généré les clés à partir de) le package SSH de chocolatey:

chown -R $USER:users  /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
3
Jonathan

Je préfère Cygwin plutôt que PuTTY et vous pouvez simplement exécuter la commande chmod dans cygwin pour changer l'autorisation de la clé PEM à 400, alors vous êtes prêt à partir.

myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/mykey.pem [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0550 for '/cygdrive/c/Users/myuser/Downloads/mykey.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/cygdrive/c/Users/myuser/Downloads/mykey.pem": bad permissions
Permission denied (publickey).

myuser@myuser-HP ~
$ chmod
chmod: missing operand
Try 'chmod --help' for more information.

myuser@myuser-HP ~
$ chmod 400 /cygdrive/c/Users/myuser/Downloads/mykey.pem

myuser@myuser-HP ~
$ ssh -i /cygdrive/c/Users/myuser/Downloads/meykey.pem [email protected]

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.Amazon.com/Amazon-linux-AMI/2015.09-release-notes/
[ec2-user@ip-xxx ~]$ ohyeah I am in!
3
B.Mr.W.

J'ai rencontré le même problème sur Windows 10. Je l'ai résolu en ajoutant mon utilisateur et en accordant les autorisations Modifier, Lire et exécuter, Lire et écrire. J'ai supprimé tous les autres utilisateurs. Voici à quoi cela ressemble après avoir supprimé toutes les autres autorisations:

enter image description here

3
Erin

Aujourd'hui, l'un des moyens recommandés sous Windows serait d'utiliser PowerShell et le Get-Acl et Set-Acl Cmdlets.

Voici un exemple pour vous assurer que seul l'utilisateur actuel a l'autorisation d'accéder à un dossier et à tous les fichiers qu'il contient - similaire à ce qui est recommandé pour le .ssh dossier sous Unix/Linux/OS X:

# get current ACL of directory
$Acl = Get-Acl -Path $Directory

# remove inheritance ($true) and remove all existing rules ($false)
$Acl.SetAccessRuleProtection($true,$false)

# create new access rule for
# current user
# with FullControl permission
# enable inheritance for folders and files
# enable it for the specified folder as well
# allow these conditions 
$AcessRule = [System.Security.AccessControl.FileSystemAccessRule]::new(
    $env:USERNAME,
    "FullControl",
    ([System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit),
    System.Security.AccessControl.PropagationFlags]::None,
    [System.Security.AccessControl.AccessControlType]::Allow)

# add access rule to empty ACL
$Acl.AddAccessRule($AcessRule)

# activate ACL on folder
Set-Acl -Path $SgwConfigDirectory -AclRule

Pour plus de détails, voir

1
Florian Feldhaus

J'ai le même problème. La solution, qui a fonctionné, a été de définir le mode de compatibilité de ssh.exe sur Windows XP SP3.

-> Cette réponse fonctionne pour Windows 7

1
tCheang