Erreur «Bad owner or permissions» en utilisant ssh.exe de Cygwin

29

J'essaie d'utiliser ssh.exe dans Cygwin (sous Windows 7). J'ai copié un configfichier dans c:\cygwin\home\[USERNAME]\.ssh. Lorsque j'exécute ssh(par exemple, ssh -vT [email protected]) j'obtiens l'erreur suivante:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 févr. 2011 Propriétaire ou autorisations incorrects sur /home/[USERNAME[/.ssh/config

Comment sshlire mon fichier de configuration?

Rebecca Scott
la source

Réponses:

46

Après avoir fait comme ci-dessus, j'ai toujours obtenu ceci:

total 22
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 .
drwxrwxr-x+ 1 jl None    0 Sep  9 18:44 ..
-rw-rw----  1 jl None  129 Jul  1 14:30 config

et l'erreur sur .ssh/config. J'ai donc exécuté chownsur le .sshdossier, et chmodencore comme ceci:

> chown -R [USERNAME]:users .ssh/

et alors:

> chmod -R 600 .ssh/

et finalement je l'ai fait fonctionner:

total 29
drwxrwxr-x+ 1 jl None     0 Sep  9 18:44 .
drwxrwxrwt+ 1 jl None     0 Sep  9 18:44 ..
drw-------+ 1 jl Users    0 Sep  9 18:44 .ssh

Modifier (pour bash sur Windows10)

Lorsque vous obtenez l'erreur ..

Échec de l'ajout de l'hôte à la liste des hôtes connus (/PATH_TO_HOME/USERNAME/.ssh/known_hosts).

Assurez-vous que known_hosts est accessible en écriture

$ chmod 755 hôtes_connus

Remarque: je crois que vous devez uniquement définir 600 pour votre clé privée

Ensuite, essayez de ssh.

Quand vous obtenez..

Ajout permanent de 'HOST_IP' (RSA) à la liste des hôtes connus.

Vous pouvez remplacer le mode 600

$ chmod 600 known_hosts

PS : Je pense que c'est un bug sur Windows 8.

Joaolvcm
la source
La réponse acceptée n'a pas fonctionné pour moi, mais cela a fonctionné. Merci!
Achal Dave
De plus, c'est un bug assez étrange. Sur mon ordinateur (W8.1), l'édition du fichier .ssh / config dans Vim conduit toujours à ce bogue. C'est extrêmement ennuyeux, car chaque modification de ma configuration ssh nécessite l'exécution de ces commandes.
Achal Dave
4
Et pour ajouter à la bizarrerie, si vous utilisez une version non anglaise de Windows, assurez-vous d'utiliser la traduction locale des "utilisateurs" lors de l'émission de cette commande. Par exemple en néerlandais, il devient "chown -R: Gebruikers .ssh"
Alexander Kellett
1
Pour moi, cela a fonctionné: chown -R m0j0: Utilisateurs .ssh && chmod -R go-rwx .ssh
m0j0
1
Merci, cela a aussi fonctionné pour moi, en allemand, vous devez utiliserchown -R [Username]:Benutzer .ssh/
con
20

Cette réponse est copiée textuellement à partir de /superuser//a/875934/82032 . C'est la seule réponse qui a fonctionné pour moi après une récente mise à niveau de cygwin.

N'oubliez pas les ACL

Rien n'a fonctionné pour moi jusqu'à ce que je supprime le fichier d' ACL et réinitialise les autorisations.

#remove ACLs
setfacl -b ~/.ssh/config

#reset permissions
chmod 0600 ~/.ssh/config

Vous pouvez utiliser getfaclpour afficher la liste de contrôle d'accès actuelle dans un fichier.

getfacl ~/.ssh/config

Avant de supprimer les ACL (cassé):

# owner: Administrators
# group: None
user::rw-
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
mask:rwx
other:---

Après le travail)

# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---
gdw2
la source
C'est ce que j'ai dû faire après la mise à niveau de cygwin
blockloop
1
Cela nécessite cygwin 1.7.34-6
ClintM
C'est ce qui a fonctionné pour moi!
Ashutosh Jindal
9

Vérifiez les autorisations du configfichier à l'aide de la lscommande de Cygwin :

> c:\cygwin\bin\ls.exe -la c:\cygwin\home\[USERNAME]\.ssh

Ce sera probablement quelque chose comme ça:

total 5
drwxrwxrwt+ 1 Administrators None  0 Oct 20 17:02 .
drwxr-xr-x+ 1 [USERNAME]     None  0 Oct 19 08:15 ..
-rw-------  1 Administrators None 57 Oct 20 16:58 config

Le fichier de configuration doit appartenir à [USERNAME]. Essaye ça:

> c:\cygwin\bin\chown.exe [USERNAME] c:\cygwin\home\[USERNAME]\.ssh\config

ls -ladevrait maintenant montrer le bon propriétaire. Si cela ne fonctionne toujours pas, essayez de réinitialiser le mode (autorisations):

> c:\cygwin\bin\chmod.exe 700 c:\cygwin\home\[USERNAME]\.ssh\config
Rebecca Scott
la source
9

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 suis pas sûr pourquoi.

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

choco install cyg-get

Ouvrez Cygwin Terminal qui a été installé avec chocolatey et exécuté (notez que cela ssh-keygencré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 le shell Cygwin:

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
Jonathan
la source
C'est généralement pour moi, car le groupe a généralement tort sur les fichiers.
Alan Krueger
3

Remarque importante si votre Windows n'est pas en anglais américain: le nom du groupe "utilisateurs" dépend des paramètres régionaux. Par exemple, si votre Windows est en espagnol, vous devrez changer la propriété des fichiers avecchown $USER:Usuarios *

RAKK
la source
1

Aucun de ces éléments (chmod / chown / icacls / setacl / copyacls / explorer> security) n'a fonctionné sur mon cygwin64 / win7 / admin, enfin cela fonctionne avec d' cygwin64/ssh -F ~/.ssh/configautres solutions: utiliser ssh plus ancien dans cygwin32 ou ssh dans git pour windows ..

mosh
la source
L'utilisation -Frésoudra le problème avec config, mais ne résoudra pas les autorisations pour les clés privées.
Jari Turkia
0

Pour ceux qui utilisent noaclin path avec ~/.sshdir une solution simple est de créer un lien symbolique NTFS natif:

cmd# mklink c:\home\.ssh c:\opt\cygwin\home\misc\.ssh
symbolic link created for c:\home\.ssh <<===>> c:\opt\cygwin\home\misc\.ssh

Avec noaclil n'y a aucun moyen de définir des autorisations autres que rwxr-xr-xou rw-r--r--. Comme la /hiérarchie doit être sans noacl(ou devrait être avec acl), vous pouvez créer un répertoire ici et pointer vers des endroits problématiques pour les applications de Cygwin.

gavenkoa
la source
1
Étant donné qu'il s'agit d'un répertoire, la solution simple serait d'utiliser une jonction, car cela ne nécessite pas les privilèges requis pour définir un lien symbolique. Ce serait mklink /jalors ou l' junctionoutil de la suite Sysinternals.
0xC0000022L
0

tldr: Vous avez peut-être créé la configuration en tant qu'administrateur

Solution

Ces solutions peuvent être excessives si vous avez fini par créer le fichier par erreur en tant qu'administrateur et en essayant d'utiliser le fichier avec des autorisations locales.

  • Copiez le contenu de votre configuration ssh
  • Supprimer le fichier
  • Ouvrez un nouveau shell (local - non administrateur)
  • Accédez au chemin où votre configuration est stockée ( généralement ~/.sshdans PowerShell ou %userprofile%\.sshdans cmd )
  • Courir notepad .\config

Commandes simples (PowerShell):

$sshPath = '~/.ssh/config'
$content = cat $sshPath
# In case the line above fails, this check will prevent your current config to get deleted
if ($content) {
  rm $sshPath
  $content | Out-File -en ascii $sshPath
}
AP.
la source