Mac OSX Lion 10.7.
Pour tenter de résoudre des problèmes d'environnement étranges (homebrew n'installe pas wget et j'ai eu toutes sortes de blocages et d'erreurs étranges), j'ai désinstallé zschrc et homebrew et un tas d'autres objets, puis installé Fish Shell.
Maintenant, chaque fois que j'essaie de pousser/tirer vers/depuis github, j'obtiens cette erreur:
The authenticity of Host 'github.com (204.232.175.90)' can't be established.
RSA key fingerprint is <string of colon-separated chars that I should probs keep private>.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the Host to the list of known hosts (/Users/sasha/.ssh/known_hosts).
J'ai donc essayé de vérifier les permissions de mon dossier ~./Ssh et j'ai obtenu ceci, ce qui me convient parfaitement:
-rw-r--r-- 1 sasha staff 97B Jul 9 22:56 config
-rw------- 1 sasha staff 1.7K May 16 2012 id_rsa
-rw-r--r-- 1 sasha staff 403B May 16 2012 id_rsa.pub
drwx------ 5 sasha staff 170B Jul 15 09:56 known_hosts
Tout ce qui se trouve dans known_hosts est un fichier pem que j'ai utilisé pour ssh'ing (également avec l'invite "authenticité ...") vers une instance Amazon ec2, bien que j'aie essayé de copier id_rsa et id_rsa.pub lorsque la situation était désespérée.
Une idée de ce qui se passe? J'adorerais résoudre ce problème afin de ne pas recevoir les invites tant de fois que je pousse/tire.
EDIT J'ai suivi ces instructions avec succès il y a longtemps. J'ai donc mes clés ssh sur Github, et elles sont reconnues. Ainsi, lorsque je lance ssh -T git @ github .com, je reçois
Hi sashafklein! You've successfully authenticated, but GitHub does not provide Shell access.
Cela semble être exclusivement mon ordinateur local qui n’est pas satisfait de ma situation SSH.
Known_hosts ne devrait-il pas être un fichier plat, pas un répertoire?
Si ce n'est pas le problème, alors cette page sur Github pourrait être utile. Essayez d'utiliser SSH avec l'indicateur -v ou -vv pour voir les messages d'erreur détaillés. Cela vous donnera peut-être une meilleure idée de ce qui échoue.
Dans votre cas spécifique, votre known_hosts
est un dossier, vous devez donc d'abord le supprimer.
Pour les autres personnes rencontrant un problème similaire, veuillez cocher la permission correspondante sur votre ~/ssh/known_hosts
car il peut appartenir à un utilisateur différent (par exemple, root). Donc, vous pouvez essayer de lancer:
Sudo chown -v $USER ~/.ssh/known_hosts
réparer.
Pour les gars sur Ubuntu, si vous obtenez cette erreur:
Impossible d'ajouter l'hôte à la liste des hôtes connus
Ensuite, supprimez simplement le fichier known_hosts
et réexécutez votre ssh. Ceci régénérera le fichier known_Host
avec les autorisations appropriées et ajoutera l'hôte distant que vous essayez de ssh dans ce fichier.
Je pense que la question du PO est résolue en supprimant le fichier ~/.ssh/known_hosts (qui était un dossier, pas un fichier). Mais pour les autres personnes susceptibles d'avoir ce problème, j'ai remarqué qu'un de mes serveurs avait des autorisations étranges (400):
-r--------. 1 user user 396 Jan 7 11:12 /home/user/.ssh/known_hosts
J'ai donc résolu cela en ajoutant propriétaire/utilisateur PLUS write.
chmod u+w ~/.ssh/known_hosts
Ainsi. ~/.ssh/known_hosts doit être un fichier plat, que vous devez posséder, et vous devez être capable de le lire et de l'écrire.
Vous pouvez toujours déclarer la faillite de known_hosts, la supprimer et continuer à faire les choses comme d'habitude, et la connexion à des objets (git/ssh) régénérera un nouvel hôte known_hosts qui devrait bien fonctionner.
C'est la solution dont j'avais besoin.
Sudo chmod 700 ~/.ssh/
Sudo chmod 600 ~/.ssh/*
Sudo chown -R ${USER} ~/.ssh/
Sudo chgrp -R ${USER} ~/.ssh/
Cette commande a fonctionné pour moi,
Sudo chown -v $USER ~/.ssh/known_hosts
comme mentionné par @kenorb.
L'erreur venait en raison d'autorisations brisées, pour l'utilisateur actuel.
Bon alors les autorisations idéales ressemblent à ceci
Pour le répertoire ssh (vous pouvez l'obtenir en tapant ls -ld ~/.ssh/
)drwx------ 2 oroborus oroborus 4096 Nov 28 12:05 /home/oroborus/.ssh/
d signifie répertoire, rwx signifie que l'utilisateur oroborus a les droits d'écriture, d'écriture et d'exécution. Ici oroborus est le nom de mon ordinateur, vous pouvez trouver le vôtre en faisant écho à $ USER. Le deuxième oroborus est en réalité le groupe. Vous pouvez en savoir plus sur ce que chaque champ signifie ici . Il est très important d’apprendre cela, car si vous travaillez sur Ubuntu/osx ou sur une distribution Linux, il est fort probable que vous le rencontriez à nouveau.
Maintenant, pour que votre permission ressemble à ceci, vous devez taperSudo chmod 700 ~/.ssh
7 en binaire est 111, ce qui signifie lecture 1 écriture 1 et exécution 1, vous pouvez décoder 6 par un moyen logique similaire, uniquement les autorisations lecture/écriture
Vous avez donné à votre utilisateur des autorisations d'écriture et d'exécution en lecture. Assurez-vous que vos autorisations de fichiers ressemblent à ceci.
total 20
-rw------- 1 oroborus oroborus 418 Nov 8 2014 authorized_keys
-rw------- 1 oroborus oroborus 34 Oct 19 14:25 config
-rw------- 1 oroborus oroborus 1679 Nov 15 2015 id_rsa
-rw------- 1 oroborus oroborus 418 Nov 15 2015 id_rsa.pub
-rw-r--r-- 1 oroborus root 222 Nov 28 12:12 known_hosts
Vous avez donné ici la permission de lecture-écriture à votre utilisateur ici pour tous les fichiers. Vous pouvez le voir en tapant ls -l ~/.ssh/
Ce problème se produit car ssh est un programme qui tente d'écrire dans un fichier appelé known_hosts de son dossier. Lors de l'écriture, s'il sait qu'il ne dispose pas des autorisations suffisantes, il n'écrira pas dans ce fichier et échouera donc. C’est ma compréhension de la question, plus de personnes bien informées peuvent apporter plus de lumière à cet égard. J'espère que ça aide
Cela m'est arrivé simplement à cause d'autorisations brisées. Mon utilisateur n'a pas d'accès en lecture ni en écriture à ce fichier. Correction des autorisations a résolu le problème
pour moi, je fais juste ceci:
rm -rf ~/.ssh/known_hosts
puis :
je viens juste de SSH à l'hôte cible et tout ira bien . Cela uniquement si vous ne savez pas, quelle autorisation et le propriétaire par défaut du fichier "known_hosts".
Pour ceux qui sont intéressés, celui-ci a fonctionné pour moi dans Ubuntu:
Allez dans le répertoire .ssh .
$ cd ~/.ssh
Supprimez le fichier known_hosts .
$ rm known_hosts
Re-Push vos changements Git.
Cette commande a fonctionné pour moi,
Sudo chmod +x ~/.ssh/known_hosts
Vérifiez les permissions du fichier, s'il est bon, vérifiez les répertoires parents
Je devais corriger
/home/sravindr/.ssh autorisations qui ont fonctionné pour moi