Mac OSX Lion 10.7.
Um mich mit verrückten Umgebungen herumzureißen (Homebrew installierte wget nicht und ich hatte alle möglichen seltsamen Blöcke und Fehler), deinstallierte ich zschrc und Homebrew und ein paar andere Sachen und installierte dann Fish Shell.
Immer wenn ich versuche, zu/von github zu schieben/zu ziehen, erhalte ich diese Fehlermeldung:
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).
Also habe ich versucht, die Berechtigungen meines ~./Ssh-Ordners zu überprüfen, und habe folgendes bekommen, was für mich gut aussieht:
-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
Alles, was in known_hosts enthalten ist, ist eine PEM-Datei, die ich für das ssh'ing (auch mit der Aufforderung "authenticity ...") zu einer Amazon-ec2-Instanz verwendet habe, obwohl ich versucht habe, id_rsa und id_rsa.pub dort zu kopieren, wenn die Dinge verzweifelt wurden.
Irgendeine Idee, was los ist Ich würde gerne das Problem beheben, damit ich nicht jedes Mal, wenn ich Push/Pull drücke, aufgefordert wird.
EDIT Ich habe diese Anweisungen befolgt, vor einiger Zeit erfolgreich, also habe ich meine SSH-Schlüssel auf Github, und sie werden erkannt, wenn ich ssh -T git @ github .com, bekomme ich
Hi sashafklein! You've successfully authenticated, but GitHub does not provide Shell access.
Es scheint ausschließlich mein lokaler Computer zu sein, der mit meiner ssh-Situation nicht zufrieden ist.
Sollte known_hosts nicht eine flache Datei sein, kein Verzeichnis?
Wenn das nicht das Problem ist, könnte diese Seite auf Github eine Hilfe sein. Verwenden Sie SSH mit der Markierung -v oder -vv, um ausführliche Fehlermeldungen anzuzeigen. Es könnte Ihnen eine bessere Vorstellung davon geben, was nicht funktioniert.
In Ihrem speziellen Fall ist Ihr known_hosts
ein Ordner, daher müssen Sie ihn zuerst entfernen.
Für andere Personen, bei denen ein ähnliches Problem auftritt, überprüfen Sie bitte die Erlaubnis für Ihren ~/ssh/known_hosts
, da dieser möglicherweise einem anderen Benutzer gehört (beispielsweise root). Sie können also versuchen zu laufen:
Sudo chown -v $USER ~/.ssh/known_hosts
etwas reparieren.
Für Jungs auf Ubuntu, wenn Sie diesen Fehler erhalten:
Fehler beim Hinzufügen des Hosts zur Liste der bekannten Hosts
Dann löschen Sie einfach die known_hosts
-Datei und führen Sie Ihre SSH erneut aus. Dadurch wird die known_Host
-Datei mit den entsprechenden Berechtigungen neu erstellt und der entfernte Host, den Sie versuchen, ssh in diese Datei aufzunehmen.
Ich denke, die Frage des OPs wird durch das Löschen von ~/.ssh/known_hosts (das war ein Ordner, keine Datei) gelöst. Aber für andere, die dieses Problem haben könnten, fiel mir auf, dass einer meiner Server seltsame Berechtigungen hatte (400):
-r--------. 1 user user 396 Jan 7 11:12 /home/user/.ssh/known_hosts
Also löste ich dieses Problem, indem ich Besitzer/Benutzer PLUS schreibe.
chmod u+w ~/.ssh/known_hosts
Somit. ~/.ssh/known_hosts muss eine flache Datei sein und in Ihrem Besitz sein, und Sie müssen lesen und schreiben können.
Sie können known_hosts immer als Konkurs deklarieren, löschen und normal weiterarbeiten. Wenn Sie sich mit Dingen (git/ssh) verbinden, wird ein neues known_hosts erstellt, das gut funktionieren sollte.
Dies ist die Lösung, die ich brauchte.
Sudo chmod 700 ~/.ssh/
Sudo chmod 600 ~/.ssh/*
Sudo chown -R ${USER} ~/.ssh/
Sudo chgrp -R ${USER} ~/.ssh/
Dieser Befehl hat für mich funktioniert,
Sudo chown -v $USER ~/.ssh/known_hosts
wie von @kenorb erwähnt.
Der Fehler wurde aufgrund fehlerhafter Berechtigungen für den aktuellen Benutzer verursacht.
Okay, so sehen ideale Berechtigungen aus
Für das ssh-Verzeichnis (Sie können dies erhalten, indem Sie ls -ld ~/.ssh/
eingeben)drwx------ 2 oroborus oroborus 4096 Nov 28 12:05 /home/oroborus/.ssh/
d bedeutet Verzeichnis, rwx bedeutet, dass der Benutzer oroborus über Lese- und Ausführungsberechtigung verfügt. Hier ist oroborus mein Computername. Sie können Ihren finden, indem Sie $ USER wiederholen. Der zweite Oroborus ist eigentlich die Gruppe. Sie können mehr darüber erfahren, was jedes Feld hier bedeutet. Es ist sehr wichtig, dies zu lernen, denn wenn Sie an Ubuntu/Osx oder Linux-Distributionen arbeiten, werden Sie darauf erneut stoßen.
Damit Ihre Erlaubnis so aussieht, müssen Sie sie eingebenSudo chmod 700 ~/.ssh
7 in binär ist 111, dh Lesen 1 Schreiben 1 und Ausführen 1, Sie können 6 mit ähnlichen logischen Mitteln nur Lese- und Schreibberechtigungen dekodieren
Sie haben Ihrem Benutzer Lese- und Ausführungsberechtigungen erteilt. Stellen Sie sicher, dass Ihre Dateiberechtigungen so aussehen.
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
Sie haben Ihrem Benutzer hier für alle Dateien die Berechtigung Lesen und Schreiben erteilt. Sie können dies durch Eingabe von ls -l ~/.ssh/
sehen.
Dieses Problem tritt auf, weil es sich bei ssh um ein Programm handelt, das versucht, in eine Datei namens known_hosts in seinem Ordner zu schreiben. Wenn er beim Schreiben weiß, dass er nicht über ausreichende Berechtigungen verfügt, schreibt er nicht in diese Datei und schlägt daher fehl. Dies ist mein Verständnis des Themas, mehr sachkundige Personen können mehr Licht in dieses Licht werfen. Ich hoffe es hilft
Es ist mir einfach passiert, weil die Berechtigungen gebrochen sind. Mein Benutzer hatte weder Lese- noch Schreibzugriff auf diese Datei. Durch das Festlegen von Berechtigungen wurde das Problem behoben
Ich habe den "ssh" -Schlüssel erneut generiert und meinem Git-Konto hinzugefügt. Das hat bei mir funktioniert.
Bitte finden Sie folgende Befehle, um den "ssh-key" zu generieren:
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
-> Hiermit wird ein neuer SSH-Schlüssel erstellt, der die angegebene E-Mail-Adresse als Bezeichnung verwendet.
Generating public/private rsa key pair.
-> Wenn Sie aufgefordert werden, "Geben Sie eine Datei ein, in der der Schlüssel gespeichert werden soll", drücken Sie die Eingabetaste. Dies akzeptiert den Standardspeicherort der Datei.
Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter]
-> Geben Sie an der Eingabeaufforderung eine sichere Passphrase ein. Weitere Informationen finden Sie unter "Arbeiten mit SSH-Passwörtern"
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
-> Ihr Schlüssel wird generiert, um den Schlüssel zu kopieren:
$ Sudo cat /root/.ssh/id_rsa-pub
Hoffe das klappt!
für mich mache ich einfach das:
rm -rf ~/.ssh/known_hosts
dann :
ich ssh nur an den Ziel-Host und alles wird in Ordnung sein .. Nur wenn Sie nicht wissen, welche Berechtigung und der Standardbesitzer der Datei "known_hosts" ist.
Für alle, die daran interessiert waren, arbeitete diese in Ubuntu für mich
Wechseln Sie in das Verzeichnis .ssh .
$ cd ~/.ssh
Entfernen Sie die Datei known_hosts .
$ rm known_hosts
Drücken Sie Ihre Git-Änderungen erneut.
Dieser Befehl hat für mich funktioniert,
Sudo chmod +x ~/.ssh/known_hosts
Überprüfen Sie die Berechtigungen der Datei, und prüfen Sie, ob die übergeordneten Verzeichnisse korrekt sind
Ich musste korrigieren
/home/sravindr/.ssh Berechtigungen, die für mich gearbeitet haben