Pristup HTTPS lokaciji dostupnoj samo putem VPN-a kroz SSH prosljeđivanje
Premostite jednu HTTPS uslugu dostupnu samo preko VPN-a lokalnim SSH prosljeđivanjem, zadržite pravo ime hosta uz --connect-to i znajte šta jedno TCP prosljeđivanje ne može pokriti.
Jedna mašina već ima odobren pristup VPN-u, drugoj je potrebna tačno jedna privatna HTTPS usluga, a lokalno SSH prosljeđivanje može premostiti taj jaz bez davanja tunela drugoj mašini. Prosljeđivanje nosi jedno TCP odredište umjesto cijele mreže, i upravo je to ograničenje poenta. Prođite kroz pet koraka ispod po redu, jer svaki pada zbog drugog razloga i kasniji korak ne može spasiti raniji jaz. Ako nedostaje bilo koji preduslov, ovaj dizajn ga ne rješava i nikakvo podešavanje komandi neće pomoći.
Prvi korak: potvrdite tri preduslova
Tri stvari moraju već biti istinite prije nego što ijedna komanda bude važna. Potrebna vam je dozvola da prvu mašinu koristite kao host za prosljeđivanje, radni SSH pristup do nje i serverska politika koja dozvoljava predviđeno odredište. SSH nalog napravljen za prijenos datoteka može imati onemogućeno prosljeđivanje, a server koji dozvoljava prosljeđivanje i dalje može ograničiti koja su odredišta dostupna kroz njega. Pitajte prije testiranja, jer korištenje kolegine radne stanice kao tačke preskakanja bez dogovora je problem politike, čak i kada komanda radi besprijekorno.
Dvije komande rješavaju tehničku polovinu tog spiska. Prva dokazuje da nalog i ključ rade bez interaktivnog upita, a druga ispisuje stvarnu serversku politiku umjesto zakomentarisanog primjera u konfiguracijskoj datoteci.
ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'
Drugi korak: vežite loopback port i držite sesiju živom
Na mašini koja pokreće klijentsku aplikaciju otvorite lokalno prosljeđivanje prema privatnoj usluzi. Vežite ga izričito na loopback da se ne objavljuje na lokalnoj mreži i odaberite visok port koji nijedna lokalna usluga već ne drži. Držite sesiju otvorenom dok radite, jer njeno zatvaranje zatvara slušaoca. ExitOnForwardFailure pretvara odbijeno vezivanje ili zauzet port u trenutni izlaz umjesto sesije koja ostaje podignuta bez prosljeđivanja, a to je način kvara koji troši najviše vremena.
Privatna veza se uspostavlja sa jump hosta, pa DNS, rute, VPN politika i pristup usluzi tog hosta svi moraju raditi. SSH sesija ne stvara dostupnost koju jump host nema i ne može popraviti rutu koju VPN nikada nije poslao. Potvrdite slušaoca tamo gdje zaista jeste umjesto da vjerujete tišini komande.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'
Treći korak: zadržite HTTPS ime kada je socket lokalni
Posjeta https://127.0.0.1:9443/ mijenja ime TLS servera i ovlaštenje aplikacije. Certifikat izdat za portal.lab.example neće se validirati prema loopback adresi, a rezultirajuća greška izgleda kao pokvaren certifikat, a ne kao prečica prosljeđivanja. Za test s komandne linije zadržite pravi URL i promijenite samo odredište socketa. To radi --connect-to, a curl priručnik dokumentuje četveropoljni oblik korišten ispod.
curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/
Ime ostaje u URL-u, u TLS rukovanju i u zaglavlju Host, dok TCP veza ide do lokalnog slušaoca. Opcija bez proxyja zadržava test na ovom prosljeđivanju umjesto da konfigurirani HTTP proxy presretne, a zadržavanje provjere certifikata je ono što rezultat čini smislenim.
Četvrti korak: znajte šta jedno prosljeđivanje ne može pokriti
Jedno TCP prosljeđivanje pokriva jedan odredišni port. Stranica koja preusmjerava na drugo ime hosta, učitava resurse s hosta unutar privatne mreže ili šalje na drugi port treba vlastito prosljeđivanje, a svako od njih treba istu provjeru politike kao prvo. Tokovi rada u pregledniku dodaju vlastite zahtjeve, jer se pregledniku mora reći da pošalje pravo ime na lokalni port kroz proxy konfiguraciju ili lokalno mapiranje. Zato uspješan test s komandne linije ne dokazuje da će preglednik uspjeti, iako dokazuje put.
UDP, SMB otkrivanje i prijava na domen uopšte ne putuju kroz TCP prosljeđivanje. Ako je stvarna potreba opći pristup mreži, ovaj dizajn je pogrešan alat, a podržani gateway za daljinski pristup je pravi.
Peti korak: očistite i zapišite
Zaustavite sesiju kada test završi i potvrdite da je slušalac nestao. Ako je odabrani port već bio zauzet, odaberite drugi neiskorišteni loopback port i zajedno ažurirajte URL, testnu komandu i bilješku, umjesto da zaustavljate nepovezanu lokalnu uslugu da biste oslobodili broj. Ostavljanje prosljeđivanja otvorenim na laptopu pretvara dijagnostiku u neupravljanu uslugu.
Zapišite jump host, proslijeđeno odredište, lokalni port i ko je odobrio dogovor. Prosljeđivanje koje postoji samo u nečijoj shell historiji je jedno restartovanje udaljeno od ponovne istrage, a sljedeća osoba neće znati koji je od tri preduslova već provjeren.