Vraag SSH-verbindingsprobleem met fout "Hostsleutelverificatie mislukt ..."


Ik kan via SSH verbinding maken met een andere Ubuntu-machine in mijn LAN. Op beide pc's die ik heb geïnstalleerd openssh-server  maar van een andere Ubuntu-computer kan ik geen verbinding maken met mijn pc via SSH en kreeg ik de volgende foutmelding:

Hostsleutelverificatie mislukt ...


139
2018-05-28 11:36


oorsprong


Wilt u hostnamen of IP-adressen gebruiken? - Thorbjørn Ravn Andersen
Niet vergelijkbaar, maar ik kreeg dezelfde foutmelding maar vanwege een ander probleem: serverfault.com/questions/494916/... - zengr
Dit is geen Ubuntu-specifiek probleem. Kan met om het even welk gebeuren ssh vanaf de opdrachtregel. - MarkHu


antwoorden:


"Verificatie van de hostsleutel mislukt" betekent dat de gastheer sleutel van de externe host is gewijzigd.

SSH slaat de hostsleutels van de externe hosts op ~/.ssh/known_hosts. U kunt dat tekstbestand handmatig bewerken en de oude sleutel verwijderen (u kunt het regelnummer in het foutbericht zien) of gebruiken

ssh-keygen -R hostname

(die ik heb geleerd van het antwoord op Is het mogelijk om een ​​bepaalde host-sleutel te verwijderen uit SSH's known_hosts-bestand?).


164
2018-05-28 13:19



Het kan ook betekenen dat u simpelweg niet de host-sleutel van de externe host hebt. Bijvoorbeeld, als ik rm ~/.ssh/*, dan ssh -o BatchMode=yes root@somewhere, als er niets anders mis is, zal ik het krijgen Host key verification failed.  Niet belangrijk als je altijd interactief bent, maar relevant voor scripts die dezelfde fout tegenkomen. - Ron Burk
Niet verrassend, ssh-keygen -R example.net:7999 opbrengsten Host example.net:7999 not found in known_hosts. - alex
Ik verwijderde known_hosts bestand en ssh opnieuw. Het werkte. - ParisaN


Als u werkt in bepaalde externe / scripting-situaties waarbij u geen interactieve toegang tot de prompt-to-add-host-sleutel hebt, kunt u er als volgt omheen werken:

$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime

Waarschuwing: permanent 'something.example.com, 10.11.12.13' (RSA) toegevoegd aan de lijst met bekende hosts.


104
2017-07-24 00:47



+1, dit is een lelijke oplossing, maar in sommige gevallen van geautomatiseerde monitoringprocessen die werken met Dymaic IP-verbonden apparaten, is dit een eenvoudige en acceptabele oplossing. - Ninsuo
+1 Bijvoorbeeld, voor Jenkins-uitvoeringen is dit een goede oplossing. Bedankt - Lobo
@Lobo kan niet meer instemmen, ik gebruik het voor jenkins, wat cool is sh """ssh -o StrictHostKeyChecking=No ec2-user@someIpAddress-e2e sudo service tomcat restart""" - prayagupd
Mijn leven gered. Life Saver-oplossing. - user1735921


Soms is er ook een situatie wanneer u aan een seriële console werkt en vervolgens boven het commando in de uitgebreide modus controleert -v Zal je het laten zien /dev/tty bestaat niet, terwijl het wel werkt.

ssh -v user@hostname

In het eerste geval gewoon verwijderen /dev/tty en maak een symlink van /dev/ttyS0 naar /dev/tty.

rm /dev/tty
ln -s /dev/ttyS0 /dev/tty

Voeg als alternatief toe id_rsa.pub naar de externe locatie, dus er wordt geen wachtwoord gevraagd en u krijgt toegang tot inloggen.


10
2018-05-27 13:01



+1 voor het adviseren om -v parameter te gebruiken; dit kan veel helpen bij het opsporen van ssh-problemen. - daniel kullmann


In mijn geval werd dit veroorzaakt door een udev-probleem - er was geen /dev/tty apparaatknooppunt. De oplossing voor mij was gewoon:

sudo mknod -m 666 /dev/tty c 5 0

8
2017-07-25 20:28





Nou, simpelweg omdat de tweede ubuntu verbinding per sleutel en geen wachtwoord vereist.

Ik raad aan om te gebruiken sudo dpkg-reconfigure openssh-server op uw pc, en dan zou het goed moeten werken. Het reset de configuratie voor openssh en moet terugkeren naar een standaard wachtwoordverificatie.

De tweede mogelijkheid is dat er al een sleutel voor je andere ubuntu op je pc staat en dat deze dus is veranderd en niet meer wordt herkend. In dit geval moet u het bestand bewerken .ssh/authorized_keys om de problematische lijn te verwijderen die uw ubuntu identificeert.


3
2018-05-28 11:39





Dit is een oude draad en ik kwam dit antwoord net tegen, ik zal gewoon toevoegen wat ik heb gedaan om dit op te lossen.

ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME

Ik heb zojuist naar de foutmelding gekeken die hij naar me gooide en er stond op dat commando uit te voeren om het uit de lijst met hosts te verwijderen. Daarna deed ik het volgende:

ssh-copy-id HOSTNAME

Daarna volgde ik de prompts van daar totdat ik in staat was om de server in te sshoppen.


3
2018-04-15 16:09



Als dit commando krijg ik als suggestie in ubuntu 12.4. - MaNKuR


Op terminal:

ssh -o StrictHostKeyChecking=No -i YourPublicKey.pem user@example.com uptime

Het volgende bericht, of iets vergelijkbaars, zal verschijnen:

Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts.
 00:47:37 up 3 min,  0 users,  load average: 0.00, 0.00, 0.00

Maak dan zoals gewoonlijk verbinding met uw EC2:

ssh -i YourPublickey.pem user@example.com

3
2018-03-27 00:50



ik heb command-line line 0: Bad yes/no/ask argument. omdat je ten onrechte 'Nee' gebruikt in plaats van 'nee' als argument voor StrictHostKeyChecking - Axel Bregnsbo


Het betekent dat de externe hostsleutel is gewijzigd (mogelijk is het wijzigen van het hostwachtwoord),

Uw terminal stelde voor om deze opdracht als rootgebruiker uit te voeren

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231

Je moet die hostnaam verwijderen van de hosts-lijst op je pc / server. Kopieer de voorgestelde opdracht en voer deze uit als root-gebruiker.

$ sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ sudo ssh root@www.website.net -p 4231                              // Try again

Ik hoop dat dit werkt.


2
2017-08-14 04:59





Je zou je sleutel op deze manier moeten veranderen: Zoek op basis van uw gegeven fout voor welke host-sleutel is veranderd voorbeeld: beledigende ECDSA-sleutel in /Users/user-name/.ssh/known_hosts:5 zei 5de sleutel veranderd, dus doe dit:

sed -i '5d' ~/.ssh/known_hosts

Let op: je moet root zijn of een voorrecht hebben voor sudo.


1
2018-03-13 15:22



Nee, tenzij je het voor iemand anders doet, vereist het geen root of sudo. U bewerkt het bestand in uw homedirectory. Ten tweede: voor het commando om te werken is GNU sed vereist. - techraf
Misschien heb je gelijk, maar ik probeerde te ssh van Mac OSX naar ubuntu-server en ik moet dat doen. trouwens bedankt voor je reactie. - Amir.A.G


je moet de rsa-sleutel van de doelhost in de bronhost plaatsen /home/user/.ssh/known_hosts door dit op het doel te richten

ssh-keyscan -t rsa @targethost

1
2018-04-06 15:42