Ping-ul funcționează, dar SSH eșuează prin VPN: care etapă s-a rupt?
O singură încercare detaliată separă accesibilitatea TCP, transportul SSH, identitatea gazdei, autentificarea utilizatorului și permisiunea sesiunii, ca să nu mai ghicești la tunel.
Răspunsurile la ping și o autentificare SSH refuzată pot fi adevărate simultan, iar perechea nu incriminează tunelul. Răspunsurile de eco și o conexiune TCP la portul 22 sunt teste diferite cu selectori diferiți, politici diferite și adesea destinații diferite. Înregistrează o singură încercare SSH deliberată, apoi numește ultima etapă atinsă. Acel singur artefact înlocuiește o duzină de modificări speculative de configurare.
Înregistrează o încercare, nu o sesiune de înțepături
Rulează clientul o dată cu diagnostice detaliate, partajarea conexiunii dezactivată și un timp de conectare limitat. Dezactivarea partajării contează pentru că o conexiune principală deja autentificată ar răspunde în locul noii încercări și ar ascunde defectul pe care îl urmărești.
ssh -4 -vv -o ControlPath=none -o ConnectTimeout=10 [email protected]
Păstrează destinația, familia de adrese, marcajul temporal și ultima eroare neconfidențială. Indicatorul IPv4 înseamnă și că această încercare nu spune nimic despre o cale IPv6 către același nume, așa că nu generaliza de la ea. Notează de unde a fost făcută încercarea. O verificare pe gateway-ul VPN nu este același punct de vedere ca un laptop din spatele lui, iar majoritatea contradicțiilor din aceste tichete vin din amestecarea celor două.
Etapa unu și doi: TCP înainte de SSH
Prima graniță este accesibilitatea socketului: o adresă, un port și o rută pe care pachetul o urmează efectiv. Dacă conexiunea TCP nu se finalizează niciodată, deasupra ei încă nu există nimic, iar cheile de gazdă și conturile sunt irelevante.
nc -vz 10.90.4.20 22
ip route get 10.90.4.20
tcpdump -ni any 'host 10.90.4.20 and port 22'
Corelează captura cu încercarea clientului. Un SYN care pleacă și nimic care nu se întoarce indică filtrare, selectori sau o rută lipsă pe partea îndepărtată; un răspuns cu reset indică ceva ce refuză activ în loc să arunce. A doua graniță este schimbul protocolului SSH în sine. O conexiune TCP care se finalizează și apoi se blochează a trecut de accesibilitate și a intrat în negociere, răspuns al serverului sau tratarea pachetelor. Aceasta este o altă investigație, și acolo problemele legate de dimensiune devin plauzibile pentru prima dată.
Etapa trei: a cui cheie a răspuns
Când transportul este activ, clientul verifică cheia de gazdă a serverului. Un refuz aici este o afirmație despre identitate, nu despre criptografie: partenerul a prezentat o cheie pe care politica ta nu o acceptă. Tratează asta ca pe o condiție de oprire și verifică în afara benzii, la consolă sau cu operatorul care a reconstruit gazda. Ștergerea intrării memorate pentru a elimina avertismentul este singura scurtătură pe care ar trebui să o refuzi, pentru că distruge dovada că ceva a răspuns neașteptat.
Dacă gazda a fost într-adevăr reconstruită, elimină înregistrarea veche doar după confirmarea noii amprente, și notează data și motivul. Următorul inginer va întâlni același avertisment și are nevoie de acest context.
Etapa patru și cinci: cont versus permisiune
Autentificarea este a patra graniță. Acreditările refuzate înseamnă că serverul a evaluat încercarea și a refuzat-o; verifică contul, tipul de acreditări pe care serverul le acceptă și politica serverului însuși, nu parola VPN. A cincea graniță este autorizarea după o autentificare reușită. Unui utilizator autentificat i se poate refuza în continuare un shell, o comandă, un subsistem sau redirecționarea, iar aceste refuzuri arată ca defecte pentru cine citește doar ultima linie a clientului.
| Last stage reached | What it proves | Where to look next |
|---|---|---|
| No TCP connection | No SSH transport exists | Address, port, route, selectors, filter, listener |
| TCP up, exchange incomplete | Reachability is not the blocker | Server response, negotiation, packet handling |
| Host identity rejected | The peer is not the expected host | Independently verified host key |
| User authentication rejected | The attempt reached authentication | Account, credential and server policy |
| Authenticated, session denied | Login succeeded, the operation did not | Shell, command or forwarding permission |
Oprește-te după câteva încercări de parolă eșuate. Ghiceala repetată produce blocări care apoi arată ca o a doua defecțiune fără legătură și costă mai mult timp decât tichetul original.
Revenirea și evidența pe care o păstrezi
Schimbă un singur lucru o dată și notează ce ai schimbat înainte de a retesta. Dacă o modificare înrăutățește încercarea, revino imediat asupra ei în loc să stivuiți altă corectare deasupra. Repetă operațiunea originală din clientul și contextul originale. O autentificare reușită de pe altă mașină, într-o altă familie de adrese, nu este o reproducere și nu dovedește corectarea.
Curăță ce împarți. Ieșirea detaliată a clientului poate transporta nume interne, etichete de cont, căi de chei și identificatori de chei publice, așa că publică concluzia pe etape în loc de o urmă brută.