web-dev-qa-db-fra.com

Utiliser Git à travers Cygwin sur Windows 8

J'ai une aperçu de Windows 8 Dev (pas sûr si cela est pertinent, mais je n'ai jamais eu ce tracas sur W7) et j'essaie de cloner un repo git de GitHub.

Le problème est que mon ~/.ssh/id_rsa a 440 autorisations et il doit être 400. J'ai essayé de le chmodding, mais les modifications apportées aux autorisations de l'utilisateur sont reflétées dans les autorisations de groupe (c.-à-d. CHMOD 600 Résultats en 660, etc. ). Cela semble être constant dans tout fichier dans l'ensemble du système de fichiers.

J'ai essayé de jouer avec les ACLS, mais sans être en vain (contrôle total sur mon utilisateur et nier tout le monde a abouti à 000)

voici quelques sorties pour 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 d'un seul terminal

EDIT: MSYSGIT ne fonctionne pas non plus pour les mêmes raisons

16
9point6

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

Lors de l'installation de Cygwin, tous les fichiers appartiennent à aucun groupe. Vous pouvez vérifier cela en faisant un ls -al. Vous verrez qu'aucun groupe ("Aucun") est sur les fichiers. Il suffit de le changer aux utilisateurs:

chgrp Users *

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

26
Roi Danton

J'ai trouvé un piratage spécifique à Cygwin pour se déplacer pour le moment.

Version courte:
Créez simplement un nouveau groupe Windows vide, utilisez CHGRP pour modifier le groupe d'ID_RSA à cela, puis refuser des autorisations de lecture/écriture pour le groupe.

Version longue:
appuyez sur la touche Super et tapez lusrmgr.msc. Utilisez ce manager pour créer un groupe vide, appelé dites Vide_group

Maintenant, nous devons dire à Cygwin à propos de ce nouveau groupe.

mkgroup > /etc/group

Ensuite, nous mettons à jour le groupe de iD_RSA:

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Enfin, allez trouver iD_RSA Dans l'Explorateur Windows, et sous l'onglet Sécurité dans les 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 dans 7 mais pas 8, mais le problème semble que le groupe du fichier ID_RSA n'étant aucun, un groupe qui a toujours un accès en lecture/écriture complète.

En outre, cela ne semble fonctionner que pour le SSH.exe qui vient avec Cygwin, donc si vous souhaitez utiliser SSH avec git, écrasez le SSH.exe à partir de la corbeille dans votre installation GIT avec celui du dossier BIN dans votre installation CYWGIN. .

4
Daniel Stiner

Gagnez 8 + Cygwin

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

## Start Cygwin Shell
cd .ssh
chmod 600 key-file-name
2
gsbabil

En Cygwin, tapez ces commandes:

  • Définissez le bon groupe sur le dossier à domicile:

    chgrp -Rv HomeUsers /home

  • Définissez les autorisations correctes 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 "HomeUners", pas "Utilisateurs", ne peut pas encore commenter.

1
Julien Ricard

J'aimerais aussi commenter cette question aussi. J'ai rencontré un problème similaire sur mon PC Windows 7 en utilisant Git via Cygwin.

Lorsque vous essayez de pousser les changements de mon référentiel git local vers un référentiel à distance (à l'aide d'un SSH et d'un clavier pour authentification), Git a jeté un message que les autorisations 66 étaient trop ouvertes pour le fichier

~/.SSH/ID_RSA.

Bien sûr, il est correct pour le SSH-Agent de rejeter cette clé privée ouverte.

J'ai donc essayé les choses mentionnées dans ce fil et autres threads 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é jetée encore et encore.

Pour une raison quelconque, il était nécessaire de tuer le processus d'agent SSH en Cygwin et d'exécuter la commande suivante dans la coque de Bourne (Bash).

eval `ssh-agent -s`

N'oubliez pas d'ajouter l'identité souhaitée à l'agent SSH, par ex.

ssh-add ~/.ssh/id_rsa

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

git Push Origin master

et tout a bien fonctionné.

1
MichaelHuelsen
  1. iD_RSA -> Clic droit -> Propriétés -> Sécurité -> Modifier
  2. Supprimer tous les groupes et les utilisateurs (n'appuyez pas sur OK ou appliquez)
  3. Ajouter -> Entrez votre nom d'utilisateur actuel -> Check Noms
  4. Permettre "contrôle total"
  5. Appliquer

(Windows 10 Pro)

0
optimiertes

Étendre ROI Danton's Reshant . Si vous avez installé Windows 8 sur votre ancienne installation de Windows et que votre précédent répertoire Cygwin est toujours en tact, vous devrez d'abord faire quelques autres choses.

Premièrement, prenez la propriété des répertoires/fichiers Cygwin

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

User accounts

Supprimez-les et prenez la propriété avec votre propre compte utilisateur.

  1. Accéder au Properties du répertoire Cygwin
  2. Cliquez sur Advanced sur l'onglet Security
  3. Change le propriétaire à vous-même. Vous pouvez taper 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. Vérifiez `Remplacer toutes les entrées d'autorisation d'objet enfant avec des entrées d'autorisation héritables de cet objet
  7. Cliquez sur OK en bas, puis Yes à la boîte de dialogue.

Windows Security Dialog Box

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

De ROI Danton's Reshant :

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

  1. Ouvrez Cygwin et naviguez jusqu'au .ssh répertoire - cd ~/.ssh
  2. Courir chgrp Users * - Cela vous permettra de chmod les fichiers correctement.
  3. Enfin, courez chmod 400 *. 600 travaillera également.

Testez pour voir si cela fonctionnait

Simply ssh sur votre serveur de choix. Dans mon cas, c'est 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).
0
Simon Hartcher