Nå ein HTTPS-nettstad som berre er tilgjengeleg via VPN, gjennom ein SSH-vidarekoppling
Kople éin HTTPS-teneste som berre er tilgjengeleg via VPN til ei lokal SSH-vidarekoppling, hald det ekte vertsnamnet med --connect-to, og vit kva éi enkel TCP-vidarekoppling ikkje kan dekkje.
Éi maskin har allereie godkjend VPN-tilgang, ei anna maskin treng nøyaktig éi privat HTTPS-teneste, og ei lokal SSH-vidarekoppling kan byggje bru over gapet utan å gje den andre maskina ein tunnel. Vidarekopplinga ber éin TCP-destinasjon i staden for heile nettverket, og nettopp denne avgrensinga er poenget. Gå gjennom dei fem trinna nedanfor i rekkjefølgje, fordi kvart av dei feilar av ei anna årsak, og eit seinare trinn kan ikkje redde eit tidlegare gap. Manglar ein føresetnad, løyser ikkje dette designet han, og inga kommandotilpassing vil hjelpe.
Trinn éin: stadfest dei tre føresetnadene
Tre ting må allereie vere sanne før nokon kommando tyder noko. Du treng løyve til å bruke den første maskina som vidarekopplingsvert, fungerande SSH-tilgang til henne og ein serverpolitikk som tillèt den tiltenkte destinasjonen. Ein SSH-konto oppretta for filoverføring kan ha vidarekoppling slått av, og ein server som tillèt vidarekoppling kan framleis avgrense kva destinasjonar som er nåbare gjennom henne. Spør før du testar, fordi bruk av arbeidsstasjonen til ein kollega som hoppunkt utan avtale er eit politikkproblem, sjølv når kommandoen køyrer feilfritt.
To kommandoar avgjer den tekniske halvdelen av den lista. Den første beviser at kontoen og nøkkelen fungerer utan ei interaktiv førespurnad, og den andre skriv ut den faktiske serverpolitikken i staden for det kommenterte dømet i konfigurasjonsfila.
ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'
Trinn to: bind ein loopback-port og hald sesjonen i live
På maskina som køyrer klientprogrammet, opne ei lokal vidarekoppling til den private tenesta. Bind henne uttrykkeleg til loopback slik at ho ikkje blir publisert på det lokale nettverket, og vel ein høg port som ingen lokal teneste allereie held. Hald sesjonen i gang medan du arbeider, fordi å lukke henne lukkar lyttaren. ExitOnForwardFailure gjer ei avvist binding eller ein oppteken port til ein umiddelbar avslutning i staden for ein sesjon som blir ståande utan vidarekoppling, og det er feilmodusen som sløsar mest tid.
Den private sambindinga blir oppretta frå hoppverten, så DNS, ruter, VPN-politikk og tenestetilgang til den verten må alle fungere. SSH-sesjonen skaper ikkje rekkevidd som hoppverten manglar, og ho kan ikkje reparere ei rute som VPN-et aldri har dytta. Stadfest lyttaren der han faktisk er, i staden for å stole på stilla frå kommandoen.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'
Trinn tre: hald HTTPS-namnet når sokkelen er lokal
Å bla til https://127.0.0.1:9443/ endrar TLS-servernamnet og autoriteten til programmet. Eit sertifikat utstedt for portal.lab.example vil ikkje validere mot ei loopback-adresse, og feilen som oppstår ser ut som eit øydelagt sertifikat snarare enn ei vidarekopplingssnarveg. For ein kommandolinjetest, hald den ekte URL-en og endre berre sokkeldestinasjonen. Det er det --connect-to gjer, og curl-handboka dokumenterer firefeltsforma som blir brukt nedanfor.
curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/
Namnet blir verande i URL-en, i TLS-handtrykket og i Host-headeren, medan TCP-sambindinga går til den lokale lyttaren. Utan-proxy-valet held testen på denne vidarekopplinga i staden for å la ein konfigurert HTTP-proxy avskjere han, og å halde sertifikatvalideringa på er det som gjer resultatet meiningsfullt.
Trinn fire: vit kva éi vidarekoppling ikkje kan dekkje
Éi enkel TCP-vidarekoppling dekkjer éin destinasjonsport. Ei side som omdirigerer til eit andre vertsnamn, lastar ressursar frå ein vert inne i det private nettverket eller sender til ein annan port treng si eiga vidarekoppling, og kvar av dei treng same politikkkontroll som den første. Nettlesararbeidsflytar legg til eigne krav, fordi nettlesaren må få beskjed om å sende det ekte namnet til den lokale porten gjennom ein proxykonfigurasjon eller ei lokal tilordning. Ein vellukka kommandolinjetest beviser derfor ikkje at nettlesaren vil lukkast, sjølv om han beviser vegen.
UDP, SMB-oppdaging og domenepålogging går ikkje gjennom ei TCP-vidarekoppling i det heile. Viss det eigentlege behovet er generell nettverkstilgang, er dette designet feil verktøy, og ein støtta fjernåtkomst-portal er det rette.
Trinn fem: rydd opp og skriv det ned
Stopp sesjonen når testen er ferdig, og stadfest at lyttaren er borte. Viss den valde porten allereie var oppteken, vel ein annan ubrukt loopback-port og oppdater URL-en, testkommandoen og notatet saman, i staden for å stoppe ei urelatert lokal teneste for å frigjere nummeret. Å la ei vidarekoppling stå open på ein berbar PC gjer ein diagnose om til ei uadministrert teneste.
Skriv ned hoppverten, den vidarekoppla destinasjonen, den lokale porten og kven som godkjende ordninga. Ei vidarekoppling som berre finst i shell-historia til nokon er éin omstart unna ei gjenteken gransking, og neste person vil ikkje vite kva av dei tre føresetnadene som allereie er kontrollert.