253 votes

Permissions-clé privée à l’aide de Git GUI ou ssh-keygen SSH sont trop ouvertes

Récemment, j'ai été dans l'impossibilité de cloner ou de pousser à github, et je vais essayer de trouver la cause racine.

C'est sur windows

J'ai cygwin + git ainsi que msysgit.

Msysgit a été installé avec les options suivantes:

  • OpenSSH
  • L'utilisation de Git à partir de l'Invite de commandes Windows

Qui me donne 4 environnements d'essayer d'utiliser git dans:

  • Windows invite de cmd
  • Powershell
  • Git Bash
  • Cygwin

D'une certaine manière, j'ai réussi à me mettre dans une position où, quand j'essaie de cloner un dépôt à l'aide de msysgit, cmd.exe ou Powershell, j'obtiens l'erreur suivante:

> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.ssh/id_rsa' are too
> open. It is recommended that your
> private key files are NOT accessible
> by others. This private key will be
> ignored. bad permissions: ignore key:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly

C'est à l'aide de l' .ssh dans le dossier mon c:\users\ben\ dossier, qui est utilisé par la msysgit. Je soupçonne cygwin fonctionne parce que l' .ssh dossier se trouve ailleurs, mais je ne sais pas pourquoi

Dans Git Bash, j'ai vérifier les autorisations:

$ ls -l -a ~/.ssh

Ce qui me donne:

drwxr-xr-x    2 Ben      Administ        0 Oct 12 13:09 .    
drwxr-xr-x   34 Ben      Administ     8192 Oct 12 13:15 ..    
-rw-r--r--    1 Ben      Administ     1743 Oct 12 12:36 id_rsa
-rw-r--r--    1 Ben      Administ      399 Oct 12 12:36 id_rsa.pub    
-rw-r--r--    1 Ben      Administ      407 Oct 12 13:09 known_hosts

Ces autorisations sont apparemment trop détendu. Comment ils ont obtenu de cette façon, je n'ai aucune idée.

Je peux essayer de les changer...

$ chmod -v -R 600 ~/.ssh

qui me dit:

mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)

Mais il ne semble pas avoir d'effet. J'obtiens toujours la même erreur, et de faire

$ ls -l -a ~/.ssh

les rendements les mêmes autorisations que les avant de.

Mise à JOUR:

J'ai essayé de réparer les autorisations pour les fichiers dans cygwin, et cygwin les rapports de leurs autorisations correctement, gitbash ne pas: alt text

Des idées sur comment je peux corriger ces autorisations?

377voto

Koby Points 3376

Vous avez modifié les autorisations sur le répertoire entier, je suis d'accord avec Splash est une mauvaise idée. Si vous vous souvenez de ce que les autorisations pour le répertoire, je voudrais essayer de les mettre et puis effectuez les opérations suivantes

cd ~/.ssh
chmod 700 id_rsa

à l'intérieur de l' .ssh dossier. Qui va définir le fichier id_rsa à rwx (lecture, écriture, exécution) pour le propriétaire (vous), et zéro d'accès pour tout le monde.

Si vous ne pouvez pas rappeler ce que les paramètres d'origine sont, ajouter un nouvel utilisateur et de créer un ensemble de clés SSH de l'utilisateur, créant ainsi un nouveau .ssh dossier qui aura les permissions par défaut. Vous pouvez l'utiliser de nouveau .ssh dossier comme la référence pour les autorisations pour réinitialiser votre .ssh dossier et des fichiers.

Si cela ne fonctionne pas, je voudrais essayer de faire une désinstallation de msysgit, la suppression de TOUS .ssh dossiers sur l'ordinateur (juste par mesure de sécurité), puis de réinstaller msysgit avec les paramètres de votre choix et tentez de repartir à zéro (même si je pense que vous m'avez dit vous essayé ce déjà le cas).

Édité: je viens de trouver ce lien via Google -- Fixation "AVERTISSEMENT: le non protégée du FICHIER de CLÉ PRIVÉE!" sur Linux Alors qu'il est ciblé sur linux, il peut être utile puisque nous parlons liunx des autorisations et de la ces.

76voto

kittikun Points 462

Il y a un bug avec la commande chmod de cygwin, veuillez vous référer à :

http://superuser.com/questions/397288/using-Cygwin-in-Windows-8-chmod-600-does-not-work-as-expected

18voto

Pour les systèmes *nix, la correction évidente est - chmod 600 id_rsa ofc, mais sur windows 7, j'ai eu à me frapper la tête contre le mur pendant un certain temps, mais ensuite, j'ai trouvé la solution magique:

allez dans poste de travail / Clic Droit / Propriétés / Paramètres Système Avancés / Variables d'Environnement et de SUPPRIMER la variable (éventuellement à partir à la fois du système et de l'environnement utilisateur):

CYGWIN

Fondamentalement, c'est une faille dans mingw32 utilisé par git binaire windows, voir tous les fichiers en 644 et de tous les dossiers en 755 toujours. Retrait de la variable d'environnement ne change pas le comportement, mais il appearantly dit ssh.exe d'ignorer le problème. Si vous définissez des autorisations appropriées pour votre id_rsa par les explorateurs des paramètres de sécurité (il n'y a vraiment pas besoin de tout autre utilisateur de là que votre propre, de ne pas "tout le monde", pas "administrateurs", pas de "système". aucun. juste pour vous), vous serez toujours en sécurité.

Maintenant, pourquoi mingw32, un autre système que cygwin, rendrait toute utilisation de la variable d'environnement CYGWIN, est au delà de moi. Ressemble à un bug pour moi.

13voto

Steve Clay Points 3697

Je suis sur XP et cela a permis Git Bash pour communiquer w/ Github (après beaucoup de frustration):

  1. copiez c:\cygwin\bin\cyg* (~50 dossiers) c:\Program Files\Git\bin\
  2. copiez c:\cygwin\bin\ssh.exe de c:\Program Files\Git\bin\ (écrasement)
  3. Créer le fichier c:\Documents and Settings\<username>\.ssh\config contenant:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (facultatif) Utilisez ssh -v git@github voir la connexion de débogage.

  5. Essayez un coup de pouce!

Contexte: Le problème général est une combinaison de ces deux:

  • BUG: mingw32 voit tous les fichiers en 644 (autres/groupe-lisible), et rien, j'ai essayé dans mingw32, cygwin, ou Windows pourrait le réparer.
  • mingw32 SSH version ne permettra pas que pour les clés privées (généralement une bonne politique dans un serveur).

10voto

Brett Pennings Points 206

Pour Windows 7 à l’aide de la Git trouvé ici (il utilise MinGW, pas Cygwin) :

  1. Dans l’Explorateur windows, cliquez droit sur votre fichier id_rsa et sélectionnez Propriétés
  2. Sélectionnez l’onglet sécurité, puis cliquez sur modifier...
  3. Cochez la case refuser à côté de contrôle total pour tous les groupes sauf aux administrateurs
  4. Réessayez votre commande Git

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X