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.
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.
Modifiez les autorisations afin que:
Scp va maintenant lire les autorisations 0400 et sera content. Ish.
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.
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.
Tout simplement:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
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
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!
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
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