Én maskin har allerede godkjent VPN-tilgang, en annen maskin trenger nøyaktig én privat HTTPS-tjeneste, og en lokal SSH-viderekobling kan bygge bro over gapet uten å gi den andre maskinen en tunnel. Viderekoblingen bærer én TCP-destinasjon i stedet for hele nettverket, og nettopp den begrensningen er poenget. Gå gjennom de fem trinnene nedenfor i rekkefølge, fordi hvert av dem feiler av en annen grunn, og et senere trinn kan ikke redde et tidligere gap. Hvis en forutsetning mangler, løser ikke dette designet den, og ingen kommandotilpasning vil hjelpe.

Trinn én: bekreft de tre forutsetningene

Tre ting må allerede være sanne før noen kommando betyr noe. Du trenger tillatelse til å bruke den første maskinen som viderekoblingsvert, fungerende SSH-tilgang til den og en serverpolicy som tillater den tiltenkte destinasjonen. En SSH-konto opprettet for filoverføring kan ha viderekobling slått av, og en server som tillater viderekobling kan fortsatt begrense hvilke destinasjoner som er nåbare gjennom den. Spør før du tester, fordi bruk av en kollegas arbeidsstasjon som hoppunkt uten avtale er et policyproblem, selv når kommandoen kjører feilfritt.

To kommandoer avgjør den tekniske halvdelen av den listen. Den første beviser at kontoen og nøkkelen fungerer uten en interaktiv forespørsel, og den andre skriver ut den faktiske serverpolicyen i stedet for det kommenterte eksempelet i konfigurasjonsfilen.

ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'

Trinn to: bind en loopback-port og hold sesjonen i live

På maskinen som kjører klientprogrammet, åpne en lokal viderekobling til den private tjenesten. Bind den uttrykkelig til loopback slik at den ikke publiseres på det lokale nettverket, og velg en høy port som ingen lokal tjeneste allerede holder. Hold sesjonen i gang mens du arbeider, fordi å lukke den lukker lytteren. ExitOnForwardFailure gjør en avvist binding eller en opptatt port til en umiddelbar avslutning i stedet for en sesjon som blir stående uten viderekobling, og det er feilmodusen som sløser mest tid.

Den private forbindelsen opprettes fra hoppverten, så dens DNS, ruter, VPN-policy og tjenestetilgang må alle fungere. SSH-sesjonen skaper ikke rekkevidde som hoppverten mangler, og den kan ikke reparere en rute som VPN-en aldri har dyttet. Bekreft lytteren der den faktisk er, i stedet for å stole på kommandoens stillhet.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'

Trinn tre: behold HTTPS-navnet når sokkelen er lokal

Å bla til https://127.0.0.1:9443/ endrer TLS-servernavnet og applikasjonens autoritet. Et sertifikat utstedt for portal.lab.example vil ikke validere mot en loopback-adresse, og feilen som oppstår ser ut som et ødelagt sertifikat snarere enn en viderekoblingssnarvei. For en kommandolinjetest, behold den ekte URL-en og endre bare sokkeldestinasjonen. Det er det --connect-to gjør, og curl-håndboken dokumenterer firefeltsformen som brukes nedenfor.

curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/

Navnet blir værende i URL-en, i TLS-håndtrykket og i Host-headeren, mens TCP-forbindelsen går til den lokale lytteren. Uten-proxy-alternativet holder testen på denne viderekoblingen i stedet for å la en konfigurert HTTP-proxy avskjære den, og å holde sertifikatvalideringen på er det som gjør resultatet meningsfullt.

Trinn fire: vit hva én viderekobling ikke kan dekke

Én enkelt TCP-viderekobling dekker én destinasjonsport. En side som omdirigerer til et andre vertsnavn, laster ressurser fra en vert inne i det private nettverket eller sender til en annen port trenger sin egen viderekobling, og hver av dem trenger samme policykontroll som den første. Nettleserarbeidsflyter legger til egne krav, fordi nettleseren må få beskjed om å sende det ekte navnet til den lokale porten gjennom en proxykonfigurasjon eller en lokal tilordning. En vellykket kommandolinjetest beviser derfor ikke at nettleseren vil lykkes, selv om den beviser veien.

UDP, SMB-oppdagelse og domenepålogging går ikke gjennom en TCP-viderekobling i det hele tatt. Hvis det egentlige behovet er generell nettverkstilgang, er dette designet feil verktøy, og en støttet fjern tilgang-gateway er det riktige.

Trinn fem: rydd opp og skriv det ned

Stopp sesjonen når testen er ferdig, og bekreft at lytteren er borte. Hvis den valgte porten allerede var opptatt, velg en annen ubrukt loopback-port og oppdater URL-en, testkommandoen og notatet sammen, i stedet for å stoppe en urelatert lokal tjeneste for å frigjøre nummeret. Å la en viderekobling stå åpen på en bærbar PC gjør en diagnose om til en uadministrert tjeneste.

Skriv ned hoppverten, den viderekoblede destinasjonen, den lokale porten og hvem som godkjente ordningen. En viderekobling som bare finnes i noens shell-historikk er én omstart unna en gjentatt undersøkelse, og neste person vil ikke vite hvilken av de tre forutsetningene som allerede er kontrollert.

Relaterte artikler