Les Permissions de clés privées SSH utilisant git GUI ou ssh-keygen sont trop ouvertes

récemment, j'ai été incapable de cloner ou de pousser github, et j'essaie de trouver la cause profonde.

C'est sur windows

j'ai cygwin + git ainsi que msysgit.

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

  • OpenSSH
  • utiliser Git à partir de L'invite de commande de Windows

qui me donne 4 environnements pour essayer d'utiliser git in:

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

D'une façon ou d'une autre, j'ai réussi à me mettre dans une position où lorsque j'essaie de cloner un dépôt en utilisant 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

ceci utilise le .dossier ssh dans mon c:usersben le dossier, qui est utilisé par la msysgit. je soupçonne cygwin travaille parce que le .ssh dossier se trouve ailleurs, mais je ne sais pas pourquoi

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

$ ls -l -a ~/.ssh

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 permissions sont apparemment trop détendues. 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 ça ne semble pas avoir d'effet. J'obtiens toujours la même erreur, et de faire

$ ls -l -a ~/.ssh

donne les mêmes permissions qu'avant.

mise à jour:

j'ai essayé de corriger les permissions de ces fichiers dans cygwin, et cygwin rapporte leurs permissions correctement, gitbash ne: alt texte http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

une idée de comment je peux vraiment corriger ces permissions?

237
demandé sur Ben Scheirman 2009-10-12 22:26:21

23 réponses

vous avez changé les permissions sur l'ensemble du répertoire, ce qui je suis d'accord avec Splash est une mauvaise idée. Si vous vous souvenez de ce que sont les permissions originales pour le répertoire, j'essaierais de les remettre en place et ensuite de faire ce qui suit

cd ~/.ssh
chmod 700 id_rsa

à l'intérieur du .dossier ssh. Cela définira le fichier id_rsa à rwx (lire, écrire, Exécuter) pour le propriétaire (vous) seulement, et zéro accès pour tous les autres.

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

si cela ne fonctionne pas, j'essaierais de faire une désinstallation de msysgit, en supprimant tout .dossiers ssh sur l'ordinateur (juste pour la mesure de sécurité), puis réinstaller msysgit avec vos paramètres désirés et essayer de recommencer complètement (bien que je pense que vous m'avez dit que vous avez déjà essayé cela).

Edited: Also just found this link via Google -- Fixing" WARNING: UNPROTECTED PRIVATE KEY FILE!"sur Linux bien qu'il soit ciblé sur linux, il pourrait aider puisque nous parlons de permissions liunx et autres.

351
répondu Koby 2009-10-13 15:01:43

il y a un bug avec le chmod de cygwin, veuillez vous référer à:

https://superuser.com/questions/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa
73
répondu kittikun 2017-03-20 10:18:27

pour * nix systems, la solution évidente est chmod 600 id_rsa ofc, mais sur windows 7 j'ai dû frapper ma tête contre le mur pendant un certain temps, mais puis j'ai trouvé la solution magique:

aller à mon ordinateur / clic droit / Propriétés / Paramètres Système avancés / Variables D'environnement et supprimer la variable (peut - être de l'environnement du système et de l'utilisateur):

CYGWIN

en gros, c'est un défaut dans mingw32 utilisé par windows binaire git, voir tous les fichiers 644 et tous les dossiers 755 toujours. La suppression de la variable d'environnement ne change pas ce comportement, mais elle le dit apparemment à ssh.exe pour ignorer le problème. Si vous définissez les permissions appropriées à votre id_rsa à travers les paramètres de sécurité des explorateurs (il n'y a vraiment pas besoin d'avoir un autre utilisateur que le vôtre, pas "tout le monde", pas "administrateurs", pas "système". aucun. juste toi), tu seras toujours en sécurité.

Maintenant, pourquoi mingw32, un système différent de cygwin, ferait n'importe quel utilisation de la variable D'environnement CYGWIN, est au-delà de moi. Ressemble à un bug pour moi.

17
répondu Tuncay Göncüoğlu 2012-06-26 12:37:49

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

  1. copie c:\cygwin\bin\cyg* (~50 dossiers) pour c:\Program Files\Git\bin\
  2. copie c:\cygwin\bin\ssh.exe à 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 pour voir la connexion déboguée.

  5. essayez de pousser!

Contexte: La problématique générale est une combinaison de ces deux:

  • BUG: mingw32 voit tous les fichiers comme 644 (autre/lisible par groupe), et rien que j'ai essayé dans mingw32, cygwin, ou Windows pourrait le corriger.
  • La version SSH de
  • mingw32 ne permet pas cela pour les clés privées (généralement une bonne politique dans un serveur).
13
répondu Steve Clay 2011-06-17 03:23:38

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

  1. dans l'Explorateur de windows, faites un clic droit sur votre fichier id_rsa et sélectionnez Propriétés
  2. , Sélectionnez l'onglet Sécurité et cliquez sur Modifier...
  3. cochez la case Deny à côté du contrôle total pour tous les groupes sauf les administrateurs
  4. Rejouez votre commande Git
10
répondu Brett Pennings 2013-01-31 19:32:46

changer les permissions des fichiers des propriétés, désactiver l'héritage et exécuter chmod 400 ne marchait pas pour moi. Les permissions pour mon fichier de clé privé étaient:

- r--r----- 1 alex aucune 1766 8 mars 13: 04/home/alex/.SSH / id_rsa

puis j'ai remarqué que le groupe N'était pas, alors j'ai couru

chown alex:les Administrateurs ~/.SSH / id_rsa

Puis Je pourrait changer avec succès les permissions avec chmod 400, et exécuter une poussée de git.

6
répondu alex.ukf 2014-03-08 11:41:32

POUR LES UTILISATEURS MAC:

Modifier les paramètres de votre fichier de paire de clés en tapant ceci dans le terminal:

chmod og-r *filename.pem*

(assurez-vous que vous êtes dans le bon répertoire, ou le chemin du nom de fichier dans la commande correctement).

4
répondu Andrew 2012-10-21 09:16:48

OK donc voici comment j'ai réellement forcé le changement sur mes fichiers Windows en ce qui concerne les permissions elles-mêmes sur Win7: Trouver votre clé ssh dans l'explorateur windows: C:\Users [your_user_name_here].SSH \ id_rsa

clic-Droit sur le fichier>Propriétés>onglet Sécurité>bouton Avancé>Modifier les autorisations

maintenant, supprimez tous ceux qui ne sont pas réellement votre nom d'utilisateur. Cela inclut les administrateurs et les utilisateurs du système. À ce stade, vous pouvez obtenir un dialogue sur les hériter permissions-choisissez l'option qui n'hérite pas-puisque nous voulons seulement changer ce fichier.

cliquez sur OK et save till done.

je me suis battu avec cela pendant des jours parce que mon windows ne changerait pas les permissions de fichier de la ligne de commande. De cette façon, il est également fait - au lieu d'utiliser des solutions de travail passionnantes qui font peut avoir des conséquences étranges.

3
répondu diannaL 2013-07-19 09:57:35

je le résous en cours d'exécution:

chmod 400 ~/.ssh/id_rsa

j'espère aider. Bonne chance.

3
répondu CristianOrellanaBak 2014-10-23 17:46:11

après avoir abordé le problème récemment et étant l'un des meilleurs résultats de google, j'ai pensé que je participerais avec un travail simple autour documenté dans la discussion ici: http://code.google.com/p/msysgit/issues/detail?id=261#c40

implique simplement d'écraser le mysys ssh.exe avec ton cygwin ssh.exe

2
répondu chriskhan 2010-10-12 10:31:39

J'ai eu le même problème sur Windows XP récemment. J'ai essayé de faire un chmod 700 sur mon ~/.SSH / id_rsa fichier mais il ne semble pas fonctionner. Quand j'ai regardé les permissions en utilisant ls-l sur le ~/.SSH / id_rsa je pouvais voir que mes permissions effectives étaient toujours 644.

puis je me suis souvenu que les permissions windows héritent aussi des permissions des dossiers, et le dossier était toujours ouvert à tout le monde. Une solution pourrait être de définir des autorisations pour le dossier, mais je pensez qu'une meilleure façon serait de dire au système d'ignorer l'héritage pour ce fichier. Cela peut être fait en utilisant l'option avancée de l'onglet sécurité dans les propriétés du fichier, et en décochant "hériter des permissions parent..."

Cela pourrait être utile pour d'autres avec le même problème.

2
répondu daramarak 2010-11-30 22:43:51

je joue en ce moment avec git 1.6.5, et je ne peux pas répliquer votre configuration:

Administrator@WS2008 /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x    2 Administ Administ     4096 Oct 13 22:04 ./
drwxr-xr-x    6 Administ Administ     4096 Oct  6 21:36 ../
-rw-r--r--    1 Administ Administ        0 Oct 13 22:04 c.txt
-rw-r--r--    1 Administ Administ      403 Sep 30 22:36 config_disabled
-rw-r--r--    1 Administ Administ      887 Aug 30 16:33 id_rsa
-rw-r--r--    1 Administ Administ      226 Aug 30 16:34 id_rsa.pub
-rw-r--r--    1 Administ Administ      843 Aug 30 16:32 id_rsa_putty.ppk
-rw-r--r--    1 Administ Administ      294 Aug 30 16:33 id_rsa_putty.pub
-rw-r--r--    1 Administ Administ     1626 Sep 30 22:49 known_hosts

Administrator@WS2008 /k/git
$ git clone git@github.com:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.

Administrator@WS2008 /k/git
$ ssh git@github.com
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide shell access
Connection to github.com closed.

$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

chmod ne modifie pas les permissions de fichiers pour mes clés non plus.

environnement:

  • Windows Server 2008 SP2 on NTFS
  • utilisateur: administrateur
  • environnement vars:
    • PLINK_PROTOCOL=ssh
    • HOME=/c/profils/accueil

mise à Jour: Git 1.6.5.1 fonctionne aussi bien.

1
répondu alexandrul 2009-10-17 14:36:53

il s'agit d'un problème particulièrement impliqué sur Windows, où il ne suffit pas de simplement chmod les fichiers correctement. Vous devez configurer votre environnement.

sur Windows, ça a marché pour moi:

  1. Installer cygwin.

  2. remplacer le msysgit ssh.exe avec le ssh de cygwin.EXE.

  3. en utilisant cygwin bash, chmod 600 the private key file, qui était "id_rsa" pour moi.

  4. si cela ne fonctionne toujours pas, allez dans Panneau de configuration -> Propriétés du système -> Variables D'environnement avancées -> et ajoutez la variable d'environnement suivante. Répétez ensuite l'étape 3.



    Valeur De La Variable

    CYGWIN sbmntsec

1
répondu Michael Bosworth 2011-08-01 14:40:16

j'ai pu corriger cela en faisant deux choses, bien que vous n'ayez peut-être pas à faire l'étape 1.

  1. copier à partir de cygwin ssh.exe et tous les cyg*.dll dans le répertoire bin de Git (ce n'est peut-être pas nécessaire, mais c'est un pas que j'ai fait, mais cela seul n'a pas corrigé les choses)

  2. suivre les étapes de: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem /

    j'ai ajouté quelques détails à mon ~/.fichier SSH / config:

Hôte heroku.com

Nom d'hôte heroku.com

Port 22

Seulement oui

IdentityFile ~/.SSH / id_heroku

TCPKeepAlive Oui

Utilisateur brandon

j'ai dû utiliser L'utilisateur comme mon adresse e-mail pour heroku.com Remarque: cela signifie que vous devez créer une clé, j'ai suivi ce, pour créer la clé et quand il demande le nom de la clé, assurez-vous de spécifier id_heroku http://help.github.com/win-set-up-git/

  1. puis Ajouter la touche:

    heroku clés:ajouter ~/.SSH / id_heroku.pub
1
répondu Christy Hotney 2012-01-12 18:08:23

ce qui a fait l'astuce pour moi était de mettre à jour CYGWIN variable d'environnement avec: " tty nodosfilew learning ". N'a même pas besoin de faire un chmod sur la touche.

1
répondu tohokami 2013-03-23 12:14:45

ce n'est pas une réponse directe à la question principale, mais à votre question sur le fonctionnement du dossier de cygwin... En règle générale, cygwin place tous vos fichiers sous l'équivalent de c:\cygwin\home\username. Il traite ce dossier pour tous les paramètres spécifiques de L'utilisateur plutôt que le répertoire de L'utilisateur Windows.

0
répondu J Wynia 2009-10-13 17:25:13

sauf s'il y a une raison pour laquelle vous voulez garder cette paire de clés privée/publique (id_rsa/id_rsa.pub), ou profitez de frapper votre tête sur le mur, je vous recommande de les recréer et de mettre à jour votre clé publique sur github.

Commencer par faire une copie de sauvegarde de votre ~/.répertoire ssh.

entrez ce qui suit et répondez" y " À si vous voulez trop écrire les fichiers existants.

ssh-keygen -t rsa

copier le contenu du la clé publique de votre presse-papiers. (Ci-dessous comment vous devriez le faire sur un Mac).

cat ~/.ssh/id_rsa.pub | pbcopy

allez sur votre compte sur github et ajoutez cette clé.

Name: My new public key
Key: <PASTE>

quittez votre terminal et redémarrez un nouveau.

si vous recevez des messages d'erreur insensés comme" entrez votre mot de passe " pour votre clé publique lorsque vous n'en avez jamais entré une, considérez cette technique de recommencer. Comme vous le voyez ci-dessus, c'est pas compliqué.

0
répondu l3x 2013-09-05 23:07:49

Je n'ai jamais réussi à faire fonctionner git complètement à Powershell. Mais dans le shell de git bash Je n'avais pas de problèmes liés à la permission, et je n'avais pas besoin de mettre chmod etc... Après avoir ajouté le ssh à Github, j'étais opérationnel.

0
répondu Sam Kenny 2014-02-27 18:50:06

Type sur terminal:

chmod -Rf 700 ~/.ssh/

et réessayez.

0
répondu João Paulo Cercal 2014-06-26 13:40:29

avez-vous copié le fichier clé d'une autre machine?

je viens de créer un fichier id_rsa sur la machine client puis j'ai collé la clé que je voulais. Pas de problèmes d'autorisations. Rien à configurer. Il a juste travaillé. Cela fonctionne également si vous utilisez PuTTYgen pour créer la clé privée.

peut-être un problème de groupe caché si vous le copiez à partir d'une autre machine.

testé sur deux machines Windows 8.1. En utilisant le texte Sublime 3 pour copier et collez la clé privée. En utilisant Git Bash (Git-1.9.4-preview20140611).

0
répondu PhilT 2014-07-03 16:04:59

après avoir mis à jour mon installation de Cygwin vers février 2015 ( 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin ), j'ai soudainement rencontré l'avertissement UNPROTECTED PRIVATE KEY FILE .

j'ai corrigé ce problème après avoir exécuté la commande suivante:

setfacl -s u::rw-,g::---,o:--- ~/.ssh/id_rsa

( autre réponse à une autre question donne plus de contexte)

0
répondu Abdull 2017-03-20 10:18:19

la réponse de @koby ne marche pas pour moi, donc je fais un petit changement.

cd ~/.ssh
chmod 700 id_rsa.pub

cela fonctionne bien pour moi sur Mac.

0
répondu Han Pengbo 2015-04-09 03:45:16

J'ai eu le même problème sur Windows 10 où j'ai essayé de glisser dans une boite vagabonde. Cela ressemble à un bug dans L'ancienne version D'OpenSSH. Ce qui a fonctionné pour moi:

  1. installez le dernier OpenSSH de http://www.mls-software.com/opensshd.html
  2. où.exe ssh

(Notez le ".exe "si vous utilisez Powershell)

vous pourriez voir quelque chose comme:

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe

notez que dans l'exemple ci-dessus la dernière OpenSSH est la seconde dans le chemin donc elle ne s'exécute pas.

pour changer l'ordre:

  1. clic droit sur le bouton Windows - > Paramètres - > "Modifier les Variables D'environnement du système"
  2. sur les Variables D'environnement" Advance "tab click..."
  3. sous Variables système, éditez"chemin".
  4. sélectionner "C:\Program Files\OpenSSH\bin" et "Move Up" pour qu'il apparaisse en haut.
  5. Cliquez sur OK
  6. redémarrez votre Console afin que les nouvelles variables d'environnement puissent s'appliquer.
0
répondu Koning 2018-01-26 13:39:32