Är det möjligt att förhindra följande meddelande om: (FJÄRRVÄRDIDENTIFIKATION HAR ÄNDRAT)
När endast denna anslutningssyntax används
ssh xxx.xxx.xxx.xxx
exempel på varningsmeddelande:
ssh 10.19.11.1 CentOS release 5.8 (Final) Kernel 2.6.18-308.el5 on an i686 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is dd:6f:32:8f:8f:8c:70:9c:95:f1:48:83:60:97:cc:ed. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:7 RSA host key for 10.19.11.1 has changed and you have requested strict checkin. Host key verification failed.
varje gång jag får detta meddelande rensar jag /root/.ssh/known_hosts
som
cp /dev/null /root/.ssh/known_hosts
Jag var också funderar på att ställa in kommandot cp / dev / null /root/.ssh/known_hosts i crontab,
så varje dag klockan 24:00 rensar den filen known_hosts (den här lösningen minskar problemet men löste det inte )
så att den här lösningen inte är så bra lösning eftersom användaren kan få varningsmeddelandet trots att vi rengör kända_hosts-filen varje dag
kanske vi kan göra något på / etc / ssh / ssh_config-fil för att förhindra SSH-värdnyckelkontroll?
anmärkning:
Jag vill inte använda följande metod för att pr händelse SSH-värdnyckel kontrollerar (eftersom jag använder reflektion / kitt)
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]
Jag insisterar på att endast använda denna syntax som
ssh xxx.xxx.xxx.xxx
för anslutning
Kommentarer
- Enkelt uttryckt: don ' t gör det. Läste du faktiskt den varningen alls? Det finns en anledning till denna varning. Och det är för att skydda dig från skada av en MitM-attack och andra dåliga saker.
Svar
Uppdatering: Numera kan du använda SSH-certifikat , liknande TLS certifikat. Sedan kan du lägga till en known_hosts
-post för att lita på certifikatet istället för de enskilda nycklarna, och du får aldrig detta meddelande igen.
Varning @ 0xC0000022L ”s varning !
Om du vet har värdnyckeln ändrats kan du ta bort den specifika posten från known_hosts
-filen:
ssh-keygen -R xxx.xxx.xxx.xxx
Detta är mycket bättre än att skriva över hela värdfil (som kan göras med bara > /root/.ssh/known_hosts
).
Om du inte vill använda ssh
kommandoradsalternativ, jag tror att det enda andra sättet att göra detta skulle vara att ändra SSH-koden och kompilera om. Vilket du verkligen vill inte göra!
Kommentarer
- men jag vill göra detta automatiskt, när användaren klagar över det, jag inte t vill göra det manuellt
- Du vill inte ' t vill göra det manuellt (ta bort g
known_hosts
poster), och du vill inte ' göra det automatiskt (medssh
alternativ). Hur vill du göra det då? - @ l0b0 Genom att ge ett kommandoradsalternativ för att undertrycka funktionen. I vissa miljöer, till exempel virtuella maskinmiljöer och andra mycket dynamiska konfigurationer (särskilt testmiljöer), ändras dessa värdnycklar ofta och eftersom de finns i ett isolerat nätverk finns det liten säkerhet att vinna genom att göra kontrollen. Att behöva göra en
ssh-keygen -R
varje gång är irriterande. Jag antar att man kan skriva ett skal för ssh, ett skalskript som analyserar destinationsadressen och tar bort nyckeln innan man skickar alternativ till ssh, men det verkar vara för mycket.
Svara
steg 1: ta bort felaktig nyckel
ssh-keygen -R 192.168.1.1
steg 2: lägg till ny nyckel
ssh-keyscan 192.168.1.1 >> ~/.ssh/known_hosts
eller beroende på din situation
> ~/.ssh/known_hosts ssh-keyscan 192.168.1.1 192.168.1.2 ... >> ~/.ssh/known_hosts
Kommentarer
- -1 för att tillhandahålla en pistol utan varning.
- @ l0b0 Rättvis din ära!
Svar
När du ansluter till bortkastade virtuella maskiner eller sådant bör du inte lagra nycklarna i första hand.
Skapa en ssh0
alias eller funktion med följande innehåll:
alias ssh0="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR"
På detta sätt förorenar du inte din ~/.known_hosts
fil med sopor, och eftersom du använder ett annat kommando skulle det finnas en psykologisk gränsen mellan den ”riktiga” ssh och den som används för att instrumentera någon lokal widget.
Ett annat användbart alias är
alias sshy="ssh -o CheckHostIP=no"
för när du ”ansluter till en enhet som ändrar sin IP ofta, som t.ex. en hemrouter till vilken ISP tilldelar en annan IP varje gång den slås på.
Kommentarer
- Perfekt svar på detta!