Er det mulig å forhindre følgende melding om: (FJERNVARENTIDENTIFIKASJON ER ENDRET)
Når du bare bruker denne tilkoblingssyntaksen
ssh xxx.xxx.xxx.xxx
eksempel på advarsel:
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.
hver gang jeg får denne meldingen, så rengjør jeg /root/.ssh/known_hosts
som
cp /dev/null /root/.ssh/known_hosts
jeg var også tenker å sette kommandoen cp / dev / null /root/.ssh/known_hosts i crontab,
så det rengjør filen known_hosts hver dag klokken 24 (denne løsningen reduserer dette problemet, men løser det ikke )
slik at denne løsningen ikke er så god løsning fordi brukeren kan få advarselen til tross for at vi renser filen known_hosts hver dag
kanskje vi kan gjøre noe på / etc / ssh / ssh_config-fil for å forhindre SSH-vertsnøkkelkontroll?
bemerkning:
Jeg vil ikke bruke følgende metode for å pr hendelse SSH vertsnøkkel sjekker (fordi jeg bruker refleksjon / kitt)
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]
Jeg insisterer på å bare bruke denne syntaksen som
ssh xxx.xxx.xxx.xxx
for tilkobling
Kommentarer
- Enkelt sagt: don ' t gjør det. Leste du faktisk advarselen i det hele tatt? Det er en grunn til denne advarselen. Og det er for å beskytte deg mot skade fra et MitM-angrep og andre dårlige ting.
Svar
Oppdatering: I dag kan du bruke SSH-sertifikater , lik TLS sertifikater. Deretter kan du legge til en known_hosts
oppføring for å stole på sertifikatet i stedet for de enkelte nøklene, og du får aldri denne meldingen igjen.
Ta hensyn til @ 0xC0000022L «s advarsel !
Hvis du vet vertsnøkkelen er endret , kan du fjerne den spesifikke oppføringen fra known_hosts
-filen:
ssh-keygen -R xxx.xxx.xxx.xxx
Dette er mye bedre enn å overskrive hele vertsfil (som kan gjøres med bare > /root/.ssh/known_hosts
).
Hvis du ikke vil bruke ssh
kommandolinjealternativer, jeg tror den eneste andre måten å gjøre dette på ville være å endre SSH-koden og kompilere på nytt. Som du virkelig ikke vil gjøre!
Kommentarer
- men jeg vil gjøre dette automatisk, når brukeren klager på dette, vil jeg ikke t vil gjøre det manuelt
- Du vil ikke ' t vil gjøre det manuelt (removein g
known_hosts
oppføringer), og du vil ikke ' ikke vil gjøre det automatisk (ved hjelp avssh
alternativer). Hvordan vil du gjøre det da? - @ l0b0 Ved å gi et kommandolinjealternativ for å undertrykke funksjonen. I noen miljøer, for eksempel virtuelle maskinmiljøer og andre svært dynamiske konfigurasjoner (spesielt testmiljøer), endres disse vertsnøklene ofte, og fordi de er i et isolert nettverk, er det lite sikkerhet å oppnå ved å utføre kontrollen. Å måtte gjøre en
ssh-keygen -R
hver gang er irriterende. Jeg antar at man kan skrive et skall for ssh, et skallskript som analyserer destinasjonsadressen og fjerner nøkkelen før man overfører alternativer til ssh, men dette virker som for mye.
Svar
trinn 1: fjern feil nøkkel
ssh-keygen -R 192.168.1.1
trinn 2: legg til ny nøkkel
ssh-keyscan 192.168.1.1 >> ~/.ssh/known_hosts
eller avhengig av situasjonen din
> ~/.ssh/known_hosts ssh-keyscan 192.168.1.1 192.168.1.2 ... >> ~/.ssh/known_hosts
Kommentarer
- -1 for å levere en pistol uten advarsel.
- @ l0b0 Greit nok din ære!
Svar
Når du kobler til kaste virtuelle maskiner eller slike, bør du ikke lagre nøklene i utgangspunktet.
Opprett en ssh0
alias eller funksjon med følgende innhold:
alias ssh0="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR"
På denne måten vil du ikke forurense ~/.known_hosts
fil med søppel, og siden du bruker en annen kommando, ville det være en psykologisk grensen mellom den «virkelige» ssh og den som brukes til å instrumentere en lokal widget.
Et annet nyttig alias er
alias sshy="ssh -o CheckHostIP=no"
for når du «kobler til en enhet som endrer IP ofte, som f.eks. en hjemmerouter som Internett-leverandøren tildeler en annen IP hver gang den blir slått på.
Kommentarer
- Perfekt svar på dette!