Utilisation de git via cygwin sur Windows 8

16

J'ai un aperçu de développement Windows 8 (je ne sais pas si c'est pertinent, mais je n'ai jamais eu ce tracas sur w7) et j'essaie de cloner un dépôt git depuis github.

Le problème est que mon ~ / .ssh / id_rsa a 440 autorisations et il doit être 400. J'ai essayé chmodding mais toutes les modifications sur les autorisations utilisateur sont reflétées dans les autorisations de groupe (par exemple, chmod 600 donne 660, etc. ). Cela semble être constant dans tout fichier de l'ensemble du système de fichiers.

J'ai essayé de jouer avec les ACL mais en vain (le contrôle total sur mon utilisateur et le refus de tout le monde en ont généré 000)

voici quelques sorties pour vous aider:

$ git clone [removed]
Cloning into [removed]...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/john/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/john/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ chmod -v 400 ~/.ssh/id_rsa
mode of `/home/john/.ssh/id_rsa' changed from 0440 (r--r-----) to 0400 (r--------)

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ set | grep CYGWIN
CYGWIN='sbmntsec ntsec server ntea'

Je me rends compte que je pourrais utiliser msysgit ou quelque chose, mais je préférerais pouvoir tout faire à partir d'un seul terminal

Edit: Msysgit ne fonctionne pas non plus pour les mêmes raisons

9point6
la source
Même problème ici. Aperçu du consommateur Windows 8.
Simon Hartcher
"J'ai essayé de jouer avec les listes de contrôle d'accès, mais en vain (le contrôle total sur mon utilisateur et le refus de tout le monde se sont traduits par 000) " Affiche donc ls -lles autorisations comme 000( ----------) - mais êtes-vous toujours en mesure de lire le fichier, de le faire sshet de vous git cloneplaindre à propos de ça? Je suppose que sshje ne me plaindrai pas des autorisations qui semblent trop strictes. Un rapide coup d'œil au code source tend à le confirmer, mais je ne l'ai pas testé.
Keith Thompson

Réponses:

26

Il n'y a pas besoin d'un groupe vide.

Lors de l'installation de cygwin, tous les fichiers n'appartiennent à aucun groupe. Vous pouvez vérifier cela en faisant un ls -al. Vous verrez qu'aucun groupe ("aucun") ne figure sur les fichiers. Modifiez-le simplement en Utilisateurs:

chgrp Users *

Après cela, vous pouvez chmodtout ce que vous voulez.

Roi Danton
la source
chgrp Users *ne modifiera que tous les fichiers et dossiers de $PWD. Pour modifier tous les sous-dossiers / fichiers ainsi que $ PWD, utilisez l'option -R:chgrp -R users *
Adam
4

J'ai trouvé un hack spécifique à Cygwin pour contourner cela pour l'instant.

Version courte:
créez simplement un nouveau groupe Windows vide, utilisez chgrp pour changer le groupe d'id_rsa en cela, puis refusez les autorisations de lecture / écriture pour le groupe.

Version longue:
appuyez sur la touche Super et tapez lusrmgr.msc . Utilisez ce gestionnaire pour créer un groupe vide, appelé par exemple EMPTY_GROUP

Nous devons maintenant parler à Cygwin de ce nouveau groupe.

mkgroup > /etc/group

Ensuite, nous mettons à jour le groupe d' id_rsa :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Enfin, allez trouver id_rsa dans l'Explorateur Windows et sous l'onglet Sécurité dans Propriétés, refusez les autorisations de lecture / écriture, et vous devriez être prêt à partir.

Je ne sais pas comment Cygwin a pu gérer cela en 7 mais pas en 8, mais le problème semble provenir du groupe du fichier id_rsa étant None, un groupe qui a toujours un accès complet en lecture / écriture.

En outre, cela semble fonctionner uniquement pour le ssh.exe fourni avec Cygwin, donc si vous souhaitez utiliser par exemple ssh avec git, remplacez le ssh.exe de bin dans votre installation git par celui du dossier bin dans votre installation de Cywgin .

Daniel Stiner
la source
2

Gagnez 8 + Cygwin

Je suis sur Windows 8, 64 bits. Faire ce qui suit le résout pour moi:

## Start Cygwin shell
cd .ssh
chmod 600 key-file-name
gsbabil
la source
1

Dans cygwin, tapez ces commandes:

  • Définissez le bon groupe dans le dossier de départ:

    chgrp -Rv HomeUsers /home

  • Définissez les autorisations appropriées pour les fichiers d'identité ssh:

    chmod 600 -Rv ~/.ssh/id*

NB: la réponse acceptée précédente est obsolète. Le nom du groupe est "HomeUsers", pas "Users", ne peut pas encore commenter.

Julien Ricard
la source
1

Je voudrais également commenter cette question. J'ai rencontré un problème similaire sur mon PC Windows 7 en utilisant git via Cygwin.

En essayant de pousser les modifications de mon référentiel git local vers un référentiel distant (en utilisant un ssh et une paire de clés pour l'authentification), git a lancé un message indiquant que les autorisations 0660 étaient trop ouvertes pour le fichier

~ / .ssh / id_rsa.

Bien sûr, il est acceptable que l'agent ssh rejette cette clé privée ouverte.

J'ai donc essayé les choses mentionnées dans ce fil et d'autres fils liés à la propriété et au modèle rwx du fichier et du dossier ~ / .ssh

chgrp Users ~/.ssh/*
chmod 400 ~/.ssh/id_rsa

Cependant, la même erreur a été répétée à plusieurs reprises.

Pour une raison quelconque, il était nécessaire de tuer le processus ssh-agent dans cygwin et d'exécuter à nouveau la commande suivante dans le shell bourne (bash).

eval `ssh-agent -s`

N'oubliez pas d'ajouter l'identité souhaitée à l'agent ssh, par exemple

ssh-add ~/.ssh/id_rsa

Ensuite, j'ai répété une commande push valide comme

git push origin master

et tout fonctionnait bien.

MichaelHuelsen
la source
0

Pour étendre la réponse de Roi Danton . Si vous avez installé Windows 8 sur votre ancienne installation Windows et que votre ancien répertoire cygwin est toujours intact, vous devrez d'abord faire quelques autres choses.

Tout d'abord, prenez possession des répertoires / fichiers Cygwin

Il y aura des comptes d'utilisateurs associés au répertoire et aux sous-répertoires / fichiers qui ressemblent à quelque chose S-1-2-34-1234567890-1234567890-1234567890-123

Comptes utilisateur

Supprimez-les et prenez possession de votre propre compte d'utilisateur.

  1. Accéder à l' Propertiesannuaire cygwin
  2. Cliquez Advancedsur l' Securityonglet
  3. Changele propriétaire pour vous. Vous pouvez saisir votre prénom ou votre adresse e-mail associée
  4. Remove tous les utilisateurs inconnus de la liste
  5. Cliquez sur Enable Inheritance
  6. Cochez `Remplacer toutes les entrées d'autorisation d'objet enfant par des entrées d'autorisation héritables de cet objet
  7. Cliquez OKen bas puis Yesdans la boîte de dialogue.

Boîte de dialogue de sécurité Windows

Ensuite, dans Cygwin, modifiez le groupe d'utilisateurs de tous les fichiers clés

De la réponse de Roi Danton :

Lors de l'installation de cygwin, tous les fichiers n'appartiennent à aucun groupe. Vous pouvez vérifier cela en faisant un ls -al.

  1. Ouvrez Cygwin et accédez au .sshrépertoire -cd ~/.ssh
  2. Exécuter chgrp Users *- cela vous permettra d' chmodaccéder correctement aux fichiers.
  3. Enfin, exécutez chmod 400 *. 600 fonctionnera également.

Testez pour voir si cela a fonctionné

Ssh simplement vers votre serveur de choix. Dans mon cas, son Bitbucket .

Bon résultat:

$ ssh [email protected]
PTY allocation request failed on channel 0
conq: logged in as simonhartcher.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
Connection to bitbucket.org closed.

Mauvais résultat:

$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/home/Simon/.ssh/id_dsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/Simon/.ssh/id_dsa
Permission denied (publickey).
Simon Hartcher
la source
2
Avec OpenSSH pour Windows (pas cygwin) j'obtiens chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": groupe invalide `Users '
Jonathan
0
  1. id_rsa -> Clic droit -> Propriétés -> Sécurité -> Modifier
  2. Supprimer tous les groupes et utilisateurs (n'appuyez pas sur OK ou sur Appliquer)
  3. Ajouter -> Entrez votre nom d'utilisateur actuel -> Vérifier les noms
  4. Autoriser "Contrôle total"
  5. Appliquer

(Windows 10 Pro)

optimiertes
la source