Récemment, je n'ai pas pu cloner ou pousser vers github, et j'essaie de trouver la cause première.
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 commandes Windows
Cela me donne 4 environnements pour essayer d'utiliser git dans:
- Invite cmd de Windows
- Powershell
- Git Bash
- Cygwin
D'une manière ou d'une autre, j'ai réussi à me mettre dans une position où lorsque j'essaie de cloner un référentiel à 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
Cela utilise le dossier .ssh dans mon dossier c: \ users \ ben \, qui est utilisé par msysgit. Je soupçonne que cygwin fonctionne parce que le dossier .ssh est situé ailleurs, mais je ne sais pas pourquoi
Dans Git Bash, je vérifie 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étendues. Comment ils sont arrivés de cette façon, je n'en ai aucune idée.
Je peux essayer de les changer ...
$ chmod -v -R 600 ~/.ssh
ce 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 cela semble n'avoir aucun effet. Je reçois toujours la même erreur, et en faisant
$ ls -l -a ~/.ssh
donne les mêmes autorisations qu'auparavant.
METTRE À JOUR:
J'ai essayé de corriger les autorisations sur ces fichiers dans cygwin, et cygwin signale leurs autorisations correctement, gitbash ne le fait pas: alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg
Des idées sur la façon dont je peux vraiment réparer ces autorisations?
Réponses:
Vous avez modifié les autorisations sur l'ensemble du répertoire, ce que je suis d'accord avec Splash est une mauvaise idée. Si vous vous souvenez quelles sont les autorisations d'origine pour le répertoire, j'essayerais de les redéfinir sur cela, puis de procéder comme suit
dans le dossier .ssh. Cela définira le fichier id_rsa sur rwx (lecture, écriture, exécution) pour le propriétaire (vous) uniquement et un accès nul pour tous les autres.
Si vous ne vous souvenez pas des paramètres d'origine, ajoutez un nouvel utilisateur et créez un ensemble de clés SSH pour cet utilisateur, créant ainsi un nouveau dossier .ssh qui aura les autorisations par défaut. Vous pouvez utiliser ce nouveau dossier .ssh comme référence pour les autorisations permettant de réinitialiser votre dossier et vos fichiers .ssh.
Si cela ne fonctionne pas, j'essaierais de faire une désinstallation de msysgit, de supprimer TOUS les dossiers .ssh sur l'ordinateur (juste pour des raisons de sécurité), puis de réinstaller msysgit avec les paramètres souhaités et d'essayer de recommencer complètement (bien que je pense que vous me l'ayez dit vous avez déjà essayé).
Modifié: J'ai également trouvé ce lien via Google - Correction de "AVERTISSEMENT: FICHIER CLÉ PRIVÉ NON PROTÉGÉ!" sous Linux Bien qu'il soit destiné à linux, cela pourrait aider car nous parlons d'autorisations liunx et autres.
la source
-rwx------
. Donc ce que vous montrez n'est pas correct si vous avez correctement exécuté la commande chmod.Il y a un bug avec le chmod de cygwin, veuillez vous référer à:
/superuser/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected
la source
None
. (Je suppose que c'est la procédure normale lorsqu'un groupe n'a pas été explicitement défini) .Ce changement de groupe à un expliciteUsers
soi - disant permis Cygwin pour séparer les autorisations, et je pouvais enfin mettre 600 au lieu d'un 660. automatiquechmod 600
git , je me plaignais que mes autorisations étaient toujours0660
. La correction de la propriété du groupe fait que chown s'applique correctement.Pour les systèmes * nix, la solution évidente est
chmod 600 id_rsa
ofc, mais sur Windows 7, j'ai dû me frapper la tête contre le mur pendant un certain temps, mais 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 SUPPRIMEZ la variable (éventuellement à la fois du système et de l'environnement utilisateur):
CYGWIN
Fondamentalement, c'est une faille dans mingw32 utilisé par git windows binary, voyant toujours tous les fichiers 644 et tous les dossiers 755. La suppression de la variable d'environnement ne change pas ce comportement, mais elle indique apparemment à ssh.exe d'ignorer le problème. Si vous définissez les autorisations appropriées pour votre id_rsa via les paramètres de sécurité des explorateurs (il n'y a vraiment pas besoin d'y avoir d'autre utilisateur que le vôtre, pas "tout le monde", pas "administrateurs", pas "système". Aucun. Juste vous) , vous serez toujours en sécurité.
Maintenant, pourquoi mingw32, un système différent de celui Cygwin, ferait une utilisation de la variable d'environnement Cygwin, est au - delà de moi. Ça ressemble à un bug pour moi.
la source
Je suis sous XP et cela a permis à Git Bash de communiquer avec Github (après beaucoup de frustration):
c:\cygwin\bin\cyg*
(~ 50 fichiers) versc:\Program Files\Git\bin\
c:\cygwin\bin\ssh.exe
versc:\Program Files\Git\bin\
(écraser)Créez le fichier
c:\Documents and Settings\<username>\.ssh\config
contenant:(facultatif) Utilisez
ssh -v git@github
pour voir la connexion déboguée.Contexte: Le problème général est une combinaison des deux:
la source
c:\Documents and Settings\<username>\.ssh\config
puisque vous l'avez remplacéc:\Program Files\Git\bin\ssh.exe
parc:\cygwin\bin\ssh.exe
. Droite ?LogLevel DEBUG
au fichier .ssh \ config pour obtenir la sortie de débogage du processus ssh.exe démarré par git.exe.Pour Windows 7 utilisant le Git trouvé ici (il utilise MinGW, pas Cygwin):
la source
OK, voici comment j'ai forcé la modification de mes fichiers Windows concernant les autorisations elles-mêmes sur Win7: Trouvez votre clé ssh dans l'explorateur Windows: C: \ Users [your_user_name_here] .ssh \ id_rsa
Cliquez avec le bouton droit sur le fichier> Propriétés> onglet Sécurité> bouton Avancé> Modifier les autorisations
Supprimez maintenant tous ceux qui ne sont pas réellement votre nom d'utilisateur. Cela inclut l'administrateur et les utilisateurs du système. À ce stade, vous pouvez obtenir une boîte de dialogue sur l'héritage des autorisations - choisissez l'option qui N'HÉRITE PAS - car nous voulons uniquement modifier ce fichier.
Cliquez sur OK et enregistrez jusqu'à la fin.
Je me suis battu avec cela pendant des jours parce que mes fenêtres ne changeraient pas les autorisations de fichiers depuis la ligne de commande. De cette façon, cela est également EFFECTUÉ - au lieu d'utiliser des contournements passionnants qui peuvent avoir des conséquences étranges.
la source
La modification des autorisations de fichier à partir des propriétés, la désactivation de l'héritage et l'exécution de chmod 400 n'ont pas fonctionné pour moi. Les autorisations pour mon fichier de clé privée étaient les suivantes:
Ensuite, j'ai remarqué que le groupe était None, alors j'ai juste couru
Ensuite, je pouvais changer avec succès les autorisations avec chmod 400 et exécuter un push git.
la source
POUR LES UTILISATEURS MAC:
Modifiez les paramètres de votre fichier de paires de clés en tapant ceci dans le terminal:
(assurez-vous que vous êtes dans le bon répertoire ou chemin d'accès au nom de fichier dans la commande).
la source
Je le résous en cours d'exécution:
J'espère vous aider. Bonne chance.
la source
Après avoir récemment traversé le problème et étant l'un des meilleurs résultats de Google, j'ai pensé que je pourrais intégrer un simple travail 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 votre cygwin ssh.exe
la source
J'ai eu le même problème sur Windows XP récemment. J'ai essayé de chmod 700 sur mon fichier ~ / .ssh / id_rsa mais cela ne semblait pas fonctionner. Quand j'ai regardé les autorisations en utilisant ls -l sur le ~ / .ssh / id_rsa, j'ai pu voir que mes autorisations effectives étaient toujours 644.
Ensuite, je me suis souvenu que les autorisations Windows héritaient également des autorisations des dossiers, et le dossier était toujours ouvert à tout le monde. Une solution pourrait également être de définir des autorisations pour le dossier, mais je pense qu'une meilleure façon serait de dire au système d'ignorer l'héritage de 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 autorisations parent ..."
Cela pourrait être utile pour d'autres personnes ayant le même problème.
la source
Je joue en ce moment avec Git 1.6.5, et je ne peux pas répliquer votre configuration:
chmod ne modifie pas non plus les autorisations de fichier pour mes clés.
Environnement:
Mise à jour: Git 1.6.5.1 fonctionne également.
la source
Il s'agit d'un problème particulièrement complexe sous Windows, où il ne suffit pas de modifier correctement les fichiers. Vous devez configurer votre environnement.
Sous Windows, cela a fonctionné pour moi:
Installez cygwin.
Remplacez le msysgit ssh.exe par le ssh.exe de cygwin.
En utilisant cygwin bash, chmod 600 le fichier de clé privée, qui était "id_rsa" pour moi.
Si cela ne fonctionne toujours pas, allez dans Panneau de configuration -> Propriétés système -> Avancé -> Variables d'environnement et ajoutez la variable d'environnement suivante. Répétez ensuite l'étape 3.
Valeur variable
CYGWIN sbmntsec
la source
J'ai pu résoudre ce problème en faisant deux choses, bien que vous n'ayez peut-être pas à effectuer 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 une étape que j'ai prise mais cela seul n'a pas réglé les choses)
suivez les étapes depuis: 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
IdentitiesOnly yes
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive yes
User brandon
J'ai dû utiliser l'utilisateur comme adresse e-mail pour heroku.com Remarque: cela signifie que vous devez créer une clé, je l'ai suivi pour créer la clé et quand il vous demande le nom de la clé, assurez-vous de spécifier id_heroku http: / /help.github.com/win-set-up-git/
clés heroku: ajoutez ~ / .ssh / id_heroku.pub
la source
L'astuce pour moi a été de mettre à jour la variable d'environnement CYGWIN avec: " tty nodosfilewarning ". Je n'ai même pas eu besoin de modifier la clé.
la source
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'équiv de c: \ cygwin \ home \ username. Il traite ce dossier pour tous les paramètres spécifiques à l'utilisateur plutôt que le répertoire utilisateur Windows.
la source
À moins qu'il n'y ait une raison pour laquelle vous souhaitez conserver cette paire de clés privée / publique (id_rsa / id_rsa.pub), ou profiter de vous cogner la tête contre le mur, je vous recommande de les recréer et de mettre à jour votre clé publique sur github.
Commencez par faire une copie de sauvegarde de votre répertoire ~ / .ssh.
Saisissez ce qui suit et répondez "y" si vous souhaitez remplacer les fichiers existants.
Copiez le contenu de la clé publique dans votre presse-papiers. (Voici comment vous devez le faire sur un Mac).
Accédez à votre compte sur github et ajoutez cette clé.
Quittez votre terminal et redémarrez-en un nouveau.
Si vous obtenez des messages d'erreur insensés comme «Entrez votre mot de passe» pour votre clé publique lorsque vous n'en avez jamais entré, envisagez cette technique de redémarrage. Comme vous le voyez ci-dessus, ce n'est pas compliqué.
la source
Je n'ai jamais réussi à faire fonctionner complètement Git à Powershell. Mais dans le shell git bash, je n'avais aucun problème lié aux autorisations, et je n'avais pas besoin de définir chmod etc ... Après avoir ajouté le ssh à Github, j'étais opérationnel.
la source
Tapez sur le terminal:
Et essayez à nouveau.
la source
Avez-vous copié le fichier clé d'une autre machine?
Je viens de créer un
id_rsa
fichier sur la machine cliente puis de coller la clé que je voulais. Aucun problème d'autorisations. Rien à régler. Ça a juste fonctionné. 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 depuis une autre machine.
Testé sur deux machines Windows 8.1. Utilisation de Sublime Text 3 pour copier et coller la clé privée. Utilisation de Git Bash (Git-1.9.4-preview20140611).
la source
Après avoir mis à niveau mon installation Cygwin vers une version vers février 2015 (
1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin
), j'ai soudainement rencontré l'UNPROTECTED PRIVATE KEY FILE
avertissement.J'ai résolu ce problème après avoir exécuté la commande suivante:
( une autre réponse à une autre question donne plus de contexte)
la source
La réponse de @ koby ne fonctionne pas pour moi, je fais donc un petit changement.
Cela fonctionne bien pour moi sur Mac.
la source
J'ai eu le même problème sur Windows 10 où j'ai essayé de SSH dans une boîte Vagrant. Cela ressemble à un bogue dans l'ancienne version d'OpenSSH. Ce qui a fonctionné pour moi:
(Notez le ".exe" si vous utilisez Powershell)
Vous pourriez voir quelque chose comme:
Notez que dans l'exemple ci-dessus, le dernier OpenSSH est deuxième dans le chemin, il ne s'exécutera donc pas.
Pour modifier la commande:
la source
Mon système est un peu en désordre avec bash / cygwin / git / msysgit / peut-être plus ...
chmod
n'a eu aucun effet sur la clé ou leconfig
fichier.J'ai alors décidé de l'aborder depuis Windows, ce qui fonctionnait.
Properties
.Security
onglet.Advanced
près du bas.Change
, près deOwner
près du haut.Check Names
, puisOK
.Permission entries:
, mettez en surbrillance chaque utilisateur qui n'est pas "My-Awesome-Username", puis sélectionnezRemove
. Répétez cette opération jusqu'à ce que "My-Awesome-Username" soit le seul qui reste.Edit
ci-dessous.Type:
la partie supérieure est définie surAllow
, puis cochez la case en regard deFull control
.Hit
OK
,Apply
,OK
,OK
.Essayez-le maintenant ...
Il semble que parfois le mock-bash ne puisse pas contrôler la propriété du fichier. C'est particulièrement bizarre, car il est généré à partir d'un script mock-bash. Allez comprendre.
la source
Aucune des solutions de contournement suggérées ici (perms chmod / chgrp / setfacl / windows) n'a fonctionné pour moi avec msys64 sur une machine virtuelle d'entreprise Windows 7. Finalement, j'ai contourné le problème en utilisant un agent ssh avec la clé fournie sur stdin. L'ajout de cela à mon en
.bash_profile
fait la valeur par défaut pour ma connexion:Maintenant, je peux faire git push and pull avec des télécommandes ssh.
la source