Este posibil să preveniți următorul mesaj despre: (IDENTIFICAREA GAZDELOR DE LA DISTANȚĂ S-A SCHIMBAT)
Când utilizați numai această sintaxă a conexiunii
ssh xxx.xxx.xxx.xxx
exemplu de mesaj de avertizare:
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.
de fiecare dată când primesc acest mesaj, apoi curăț /root/.ssh/known_hosts
ca
cp /dev/null /root/.ssh/known_hosts
De asemenea, am fost gândindu-mă să setez comanda cp / dev / null /root/.ssh/known_hosts în crontab,
deci în fiecare zi la 24:00 curăță fișierul known_hosts (această soluție scade această problemă dar nu o rezolvă )
deci această soluție nu este o soluție atât de bună, deoarece utilizatorul poate primi mesajul de avertizare, deși curățăm fișierul known_hosts în fiecare zi
poate putem face ceva pe / etc / ssh / ssh_config fișier pentru a preveni verificarea cheii de gazdă SSH?
observație:
Nu vreau să folosesc următoarea metodă pentru a pr verificarea cheii gazdei SSH (pentru că folosesc reflexie / chit)
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]
Insist să folosesc doar această sintaxă ca
ssh xxx.xxx.xxx.xxx
pentru conexiune
Comentarii
- Pur și simplu pune: don ' t face asta. Ați citit de fapt acel avertisment? Există un motiv pentru acest avertisment. Și este pentru a vă proteja împotriva rănirii unui atac MitM și a altor lucruri rele.
Răspuns
Actualizare: În zilele noastre puteți utiliza certificate SSH , similar TLS certificate. Apoi, puteți adăuga o intrare known_hosts
pentru a avea încredere în certificatul mai degrabă decât în cheile individuale și nu veți mai primi niciodată acest mesaj.
Atenție Avertisment @ 0xC0000022L „!
Dacă știți cheia gazdă s-a schimbat , puteți elimina acea intrare specifică din fișierul known_hosts
:
ssh-keygen -R xxx.xxx.xxx.xxx
Acest lucru este mult mai bun decât suprascrierea completă fișier gazdă (care se poate face doar cu > /root/.ssh/known_hosts
).
Dacă nu doriți să utilizați ssh
opțiuni din linia de comandă, cred că singura altă modalitate de a face acest lucru ar fi modificarea codului SSH și recompilarea. Pe care chiar nu vreau să fac!
Comentarii
- dar vreau să fac asta automat, când utilizatorul se plânge de acest lucru, eu nu nu doriți să o faceți manual
- Nu ' nu doriți să o faceți manual (eliminare g
known_hosts
intrări) și nu ' nu doriți să o faceți automat (folosindssh
opțiuni). Cum doriți să o faceți atunci? - @ l0b0 Oferind o opțiune din linia de comandă pentru a suprima caracteristica. În unele medii, cum ar fi mediile de mașini virtuale și alte configurații foarte dinamice (în special mediile de testare), aceste chei gazdă se schimbă frecvent și, deoarece se află într-o rețea izolată, există puține securități de câștigat făcând verificarea. A fi nevoit să faci un
ssh-keygen -R
de fiecare dată este enervant. Presupun că s-ar putea scrie un shell pentru ssh, un script shell care analizează adresa de destinație și pre-elimină cheia înainte de a trece opțiunile la ssh, dar acest lucru pare a fi exagerat.
Răspuns
pasul 1: eliminați cheia defectă
ssh-keygen -R 192.168.1.1
pasul 2: adăugați o cheie nouă
ssh-keyscan 192.168.1.1 >> ~/.ssh/known_hosts
sau în funcție de situația dvs.
> ~/.ssh/known_hosts ssh-keyscan 192.168.1.1 192.168.1.2 ... >> ~/.ssh/known_hosts
Comentarii
- -1 pentru furnizarea unei arme fără avertisment.
- @ l0b0 Destul de onoare!
Răspuns
Când vă conectați la mașini virtuale aruncabile sau altele, ar trebui să nu stocați cheile în primul rând.
Creați un ssh0
alias sau funcție cu următorul conținut:
alias ssh0="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR"
În acest fel, nu veți polua ~/.known_hosts
fișier cu gunoi și, din moment ce utilizați o comandă diferită, ar exista un psihologic graniță între ssh-ul „real” și cel folosit pentru instrumentarea unui widget local.
Un alt alias util este
alias sshy="ssh -o CheckHostIP=no"
pentru când „se conectează la un dispozitiv care își schimbă frecvent IP-ul, de ex. un router de acasă căruia ISP-ul îi atribuie un IP diferit de fiecare dată când este pornit.
Comentarii
- Răspuns perfect la acest lucru!