SSH-lokalframføring til ein eksisterande HTTP-proxy: to loopback-adresser
Ein eksisterande proxy på ein SSH-vert kan tene éin applikasjon gjennom éi enkel lokalframføring. Hald dei to loopback-adressene og proxyprotokollen frå kvarandre.
Den godkjende proxyen din køyrer på ein språnghost der han berre lyttar på loopback, så ingenting utanfor den maskina kan nå han. Du treng ikkje VPN eller ein ny proxy; du treng éin port frå den maskina ført over til éin port hjå deg. Ei lokalframføring gjer nett det, og ho krev éin kommando pluss éi innstilling i applikasjonen. Forvirringa kjem vanlegvis av at ein blandar saman kva loopback-adresse som høyrer til kva maskin.
Avgjer om det alt finst ein fast proxy
Denne teknikken videresender ein teneste som alt køyrer. Dersom fjernverten berre har ein SSH-demon og ingen proxy, lagar inga mengd videresending ein, og tilkoplinga vil bli avvist frå fjernsida. Stadfest at proxyen er bunde, kva port han brukar, og om han lyttar på 127.0.0.1 eller på ei bestemd grensesnittadresse, for det er den adressa framføringa må rette seg mot.
Stadfestar du dette først, sparer du deg for å feilsøkje ein tunnel som aldri var kopla til noko.
Bygg framføringa og les kommandoen
Forma du vil ha, bind ein loopback-port på laptoppen din og koplar han, frå serversida, til adressa til proxyen slik serveren ser henne.
ssh -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
-L 127.0.0.1:13128:127.0.0.1:3128 [email protected]-N undertrykkjer ein fjernkommando, og -T undertrykkjer termios-tildeling, fordi du vil ha ein tunnel og ikkje eit skal. Den første loopback-adressa er der laptoppen lyttar; den andre blir løyst opp av SSH-serveren, så 127.0.0.1 der tyder proxyen på den maskina. ExitOnForwardFailure får kommandoen til å feile høgt dersom den lokale porten alt er oppteken, i staden for å starte ei økt som ikkje framfører noko. Skriv mål-adressa slik serveren løyser henne opp, for eit namn som berre laptoppen din kan løysa opp, vil feile på den andre sida.
Den eigne politikken til serveren gjeld før noko av dette verkar. AllowTcpForwarding må tillate det, og PermitOpen kan avgrense kva mål og portar ei økt kan nå, så ei framføring klienten godtar, kan framleis bli avvist av serveren. Avvisinga viser seg som ein framførings- eller kanalfeil på klienten, og det er raskare å lese den meldinga enn å endre kommandoen.
Peik éin applikasjon mot framføringa
Konfigurer applikasjonen til å bruke ein HTTP-proxy på http://127.0.0.1:13128, med påloggingsdetaljar dersom fjernproxyen krev det. Hald att eigen sertifikatverifisering i applikasjonen for HTTPS-mål, sidan proxytunnelen ikkje erstattar henne. Dette er ei fast framføring av éi teneste, så applikasjonen må få beskjed om at det finst ein proxy i staden for å måtte oppdage ein sjølv.
Ein rask sjekk før du konfigurerer noko permanent: curl -x http://127.0.0.1:13128 -I https://example.com, som prøver HTTP CONNECT-metoden proxyen må støtte.
Hald autoriteten der han var
Fjernproxyen avgjer framleis kva mål og metodar han tillèt, og ei SSH-innlogging bør ikkje stille gje kvar konto eit generelt nettrelé. Binding til 127.0.0.1 på laptoppen unngår å publisere porten på ditt lokale nett, og det gjer ikkje porten privat for andre prosessar på same maskin. Å erstatte den bindinga med ei jokerteiknadresse for å dele proxyen, er korleis eit uadministrert ope relé oppstår.
SSH-transporten vernar spranget til serveren. Forbi det punktet opnar proxyen si eiga tilkopling, så ein vanleg HTTP-førespurnad til eit mål blir verande vanleg forbi serveren, sjølv om det første segmentet var kryptert.
Stadfest begge endar, og rydd så opp
Oppsett av lokal tunnel og suksess for fjertenesta er ulike resultat, og avslutningsstatusen til kommandoen fortel deg berre om det første. Sjekk at lyttaren finst med ss -ltn, og lag deretter ein tillaten applikasjonsførespurnad og ein førespurnad som proxyen bør avvise. Dersom begge oppfører seg som venta, er vegen ekte; dersom tunnelen er oppe og kvar førespurnad feilar, avviser proxyen eller når ikkje målet.
Når du er ferdig, stopp SSH-prosessen som eig han, fjern proxyinnstillinga frå applikasjonen, og stadfest at den lokale porten er borte i staden for å etterlate ein lyttar som overlever oppgåva.