2018-02-18 05:10:44 +0000 2018-02-18 05:10:44 +0000
122
122

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

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

Il semble que j'ai besoin de changer les autorisations sur le fichier de la clé privée. Cela peut être fait facilement sur unix/linux avec la commande chmod.

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

Réponses (14)

150
150
150
2018-02-18 08:57:27 +0000

Vous localisez le fichier dans l'explorateur Windows, cliquez dessus avec le bouton droit de la souris puis sélectionnez “Propriétés”. Naviguez jusqu'à l'onglet “Sécurité” et cliquez sur “Avancé”.

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

Cela devrait finir par ressembler à ça :

29
29
29
2018-06-08 15:34:57 +0000

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

  • GUI:
  • [File] Properties - Security - Advanced
  • Définissez Owner à l'utilisateur de la clé
  • Supprimer tous les utilisateurs, groupes et services, excepté l'utilisateur de la clé, sous Entrées de permission
  • Régler l'utilisateur de la clé sur Contrôle total

  • CLI:

15
15
15
2018-09-08 13:27:16 +0000

En plus de la réponse fournie par ibug. Puisque j'utilisais le système ubuntu à l'intérieur de windows pour exécuter la commande ssh. Cela ne fonctionnait toujours pas. Donc j'ai fait

sudo ssh ...

et puis ça a fonctionné

5
5
5
2018-04-05 11:53:43 +0000

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

Si je tape

where ssh

j'obtiens…

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

Quand je lance ssh -V aux deux endroits, j'obtiens

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

…respectivement

Donc, quand je lance ssh depuis le répertoire git/bin, ça fonctionne bien et ne se plaint pas des permissions, mais en lançant la même ligne de commande, en utilisant l'ancienne installation de SSH, ça revient avec ça.

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, et rien d'autre.

5
5
5
2019-10-04 13:28:46 +0000

utilisez la commande ci-dessous sur votre clé ; elle fonctionne sur les fenêtres

icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"
4
4
4
2019-09-06 18:17:27 +0000

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 de travail. Ce que vous devez faire, c'est installer WSL puis copier votre clé dans le répertoire ssh caché dans WSL :

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

Maintenant vous devriez pouvoir modifier les permissions normalement.

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

Puis ssh en utilisant le WSL :

ssh -i ~/.ssh/<name of your key> <username>@<ip address>
3
3
3
2019-02-16 21:58:34 +0000
2
2
2
2019-08-12 12:39:01 +0000

Vous pouvez utiliser les icacls dans les fenêtres au lieu du chmod pour ajuster les autorisations de fichiers. Pour donner à l'utilisateur actuel la permission de lecture et supprimer tout le reste,

icacls <file name> /inheritance:r
icacls <file name> /grant:r "%username%":"(R)"
1
1
1
2019-10-03 21:07:46 +0000

Il s'agit juste d'une version scriptée de la réponse du CLI @JW0914, alors votez pour lui en premier lieu. De plus, c'est mon premier script PowerShell, donc les suggestions sont les bienvenues.

# DO the following in powerhsell if not already done:
# Set-ExecutionPolicy RemoteSigned

# NOTE: edit the path in this command if needed
$sshFiles=Get-ChildItem -Path C:\DevContainerHome\.ssh -Force

$sshFiles | % {
  $key = $_
  & icacls $key /c /t /inheritance:d
  & icacls $key /c /t /grant %username%:F
  & icacls $key /c /t /remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
}

# Verify:
$sshFiles | % {
  icacls $_
}
1
1
1
2019-11-28 14:45:28 +0000

Une seule ligne dans CMD pourrait faire l'affaire (comme décrit ici : https://serverfault.com/a/883338/550334 ), c'est-à-dire ajouter la clé de stdin au lieu de modifier les autorisations :

cat /path/to/permission_file | ssh-add -k

Pour vérifier si la clé a été ajoutée :

ssh-add -l
0
0
0
2019-10-29 04:30:11 +0000

Utilisez Mingw-w64.

Infos: http://mingw-w64.org/doku.php

Télécharger avec Git pour Windows, ou directement.

Disponible ici: https://github.com/mirror/mingw-w64

git clone https://github.com/mirror/mingw-w64

Il dispose également d'autres commandes Linux utiles comme tar et gzip.

0
0
0
2019-11-26 06:10:29 +0000

Je suis un utilisateur de Windows, j'utilise la “bash” de Windows et j'ai suivi toutes les étapes pour définir les autorisations en utilisant l'interface graphique de Windows, et ça ne fonctionne toujours pas et il se plaint :

Permissions 0555 for 'my_ssh.pem' are too open.
It is required that your private key files are NOT accessible by others.

The J'ai ajouté sudo au début de la commande ssh et ça marche. J'espère que cela sera utile aux autres.

0
0
0
2020-02-24 23:03:22 +0000

Je n'ai pu obtenir aucune de ces réponses en raison de problèmes d'autorisation, alors je vais partager ma solution :

  1. allez à C:\Users\UserName.ssh

  2. Copiez et collez le fichier id_rsa

  3. Renommez-le en quelque chose d'autre, par exemple example

  4. Ouvrez le fichier renommé example et remplacez la clé par votre propre clé privée

  5. cd vers ce répertoire

  6. Faites ssh -i example example@127.0.0.1 et entrez votre mot de passe.

-1
-1
-1
2019-02-08 14:20:33 +0000

La réponse d'iBug fonctionne bien ! Vous pouvez suivre cela et vous débarrasser de ce problème.

Mais il y a peu de choses à régler car j'ai rencontré des problèmes lors de la mise en place des autorisations et il m'a fallu quelques minutes pour comprendre le problème !

Suite à la réponse d'iBug, vous allez supprimer toutes les permissions mais comment se fixer la permission Full Control ? c'est là que je me suis retrouvé coincé au début car je ne savais pas comment faire.

Après avoir désactivé l'héritage, vous pourrez supprimer tous les utilisateurs ou groupes autorisés.

Une fois que c'est fait,

Cliquez sur Add puis cliquez sur Set a Principal puis entrez System et Administrators et your email addredd dans le champ en bas puis cliquez sur check names.

Il chargera le nom si l'utilisateur existe. Ensuite, cliquez sur OK > Tapez Allow > Permis de base Full Control > Okay

Cela va configurer le droit de contrôle total pour le système, les administrateurs et votre utilisateur.

Après cela, essayez d'utiliser ssh avec cette clé. Il devrait être résolu maintenant.

J'ai eu le même problème et je l'ai résolu en utilisant cette méthode. S'il y a un utilisateur ou un groupe avec ce nom, alors il va le charger.

-Screenshots- Entrées de permission Sélectionner un principal/ Sélectionner un utilisateur ou des groupes