web-dev-qa-db-fra.com

Ubuntu sur Windows 10 - SSH “Les autorisations xxxx pour les clés privées sont trop ouvertes

J'ai le fichier .pem situé sur le disque local C "c/private-key.pem" et j'ai un lien symbolique vers celui-ci sur le sous-système Ubuntu "~/.ssh/private-key.pem ->/mnt/c/private- key.pem "

Et quand j'essaye de chier une machine distante du sous-système Ubuntu, j'ai:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.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 "/home/artur/.ssh/private-key.pem": bad permissions
Permission denied (publickey).

Il a été lancé après la mise à jour 1803 pour Windows.

J'essayais d'utiliser chmod 400 pour la clé sur le lecteur C et dans le dossier ./ssh sur le sous-système. Et essayait de définir le propriétaire juste pour moi et de supprimer tous les autres utilisateurs du panneau de sécurité sur Windows pour cette clé de fichier. Mais j'ai "Permissions XXXX for '/home/artur/.ssh/private-key.pem' are too open" or "Permission denied" tout le temps.

Tout organisme peut-il m'aider et expliquer comment les autorisations de clés doivent être configurées sur Windows et le sous-système Ubuntu?

11
Artur Cherniak

Solution qui fonctionne pour moi dans Windows WSL (sans changer de mode de fichier):

Sudo ssh -i keyfile <user>@ip
7
anand

Copiez la clé SSH dans votre répertoire WSL ~/.ssh, car une clé SSH avec des autorisations autres que 600/400 compromet la clé.

  • Une fois la clé copiée, assurez-vous que ses EOL ont été remplacées par LF.

    • Il existe plusieurs façons de le faire, de l'éditeur de texte Atom aux solutions CLI telles que dos2unix, unix2dos, etc.
  • Voir la réponse de @ simpleuser ci-dessous pour comprendre pourquoi les autorisations ne peuvent pas être modifiées via Windows, ce qui nécessite de copier la clé dans le répertoire ~/.ssh du WSL.

4
JW0914

Je lis entre les lignes et je suppose que vous utilisez un sous-système Linux dans Windows 10. Lorsque vous créez un lien symbolique entre le fichier Windows de C:\et le système de fichiers Linux dans $ HOME/.ssh, les autorisations du fichier lui-même sont: toujours sous le contrôle de Windows, et les autorisations qui vous sont présentées dans la fenêtre Linux représentent le mieux les autorisations de Windows; vous ne pouvez pas modifier les autorisations sur les fichiers Windows dans/mnt/c sous Linux. Ce FAQ de Microsoft explique comment les fichiers sont gérés dans les deux systèmes de fichiers qui se chevauchent.

Le fichier sur lequel vous devez modifier l'autorisation est celui sur lequel le lien symbolique pointe alors, ce qui signifie que le fichier se trouve dans/mnt/c

Il ne semble pas possible de donner un accès utilisateur uniquement à un fichier Windows. Même si vous désactivez l'héritage des autorisations sur un fichier et n'accordez que votre propre autorisation de lecture, les autorisations Linux sont toujours affichées sous la forme -r -r -r--, elles ne seront donc pas utilisables pour .ssh

La seule option semble être de copier le fichier de Windows vers Linux, auquel cas vous pouvez utiliser chmod et chown dessus.

3
simpleuser