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?
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.
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
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.
je suis sur XP et cela a permis Git Bash pour communiquer w/ Github (après beaucoup de frustration):
- copie
c:\cygwin\bin\cyg*
(~50 dossiers) pourc:\Program Files\Git\bin\
- copie
c:\cygwin\bin\ssh.exe
àc:\Program Files\Git\bin\
(écrasement) -
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"
-
(facultatif) utilisez
ssh -v git@github
pour voir la connexion déboguée. - 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).
Pour Windows 7 à l'aide de Git trouvé ici (il utilise MinGW, pas Cygwin):
- dans l'Explorateur de windows, faites un clic droit sur votre fichier id_rsa et sélectionnez Propriétés
- , Sélectionnez l'onglet Sécurité et cliquez sur Modifier...
- cochez la case Deny à côté du contrôle total pour tous les groupes sauf les administrateurs
- Rejouez votre commande Git
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.
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).
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.
je le résous en cours d'exécution:
chmod 400 ~/.ssh/id_rsa
j'espère aider. Bonne chance.
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
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.
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.
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:
-
Installer cygwin.
-
remplacer le msysgit ssh.exe avec le ssh de cygwin.EXE.
-
en utilisant cygwin bash, chmod 600 the private key file, qui était "id_rsa" pour moi.
-
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
j'ai pu corriger cela en faisant deux choses, bien que vous n'ayez peut-être pas à faire l'étape 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)
-
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/
- puis Ajouter la touche:
heroku clés:ajouter ~/.SSH / id_heroku.pub
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.
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.
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é.
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.
Type sur terminal:
chmod -Rf 700 ~/.ssh/
et réessayez.
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).
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)
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.
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:
- installez le dernier OpenSSH de http://www.mls-software.com/opensshd.html
- 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:
- clic droit sur le bouton Windows - > Paramètres - > "Modifier les Variables D'environnement du système"
- sur les Variables D'environnement" Advance "tab click..."
- sous Variables système, éditez"chemin".
- sélectionner "C:\Program Files\OpenSSH\bin" et "Move Up" pour qu'il apparaisse en haut.
- Cliquez sur OK
- redémarrez votre Console afin que les nouvelles variables d'environnement puissent s'appliquer.