Loka plusendado per SSH al ekzistanta HTTP-prokuro: du loopback-adresoj
Ekzistanta prokuro sur SSH-gastiganto povas servi unu aplikaĵon per unu loka plusendado. Tenu la du loopback-adresojn kaj la prokuran protokolon apartaj.
Via aprobita prokuro funkcias sur saltgastiganto, kie ĝi aŭskultas nur sur loopback, do nenio ekster tiu maŝino povas atingi ĝin. Vi ne bezonas VPN-on aŭ novan prokuron; vi bezonas unu pordon de tiu maŝino portitan al unu via pordo. Loka plusendado faras ĝuste tion, kaj ĝi postulas unu komandon plus unu agordon de la aplikaĵo. La konfuzo kutime venas de miksado de tio, kiu loopback-adreso apartenas al kiu maŝino.
Decidu, ĉu fiksa prokuro jam ekzistas
Ĉi tiu tekniko plusendas servon, kiu jam funkcias. Se la fora gastiganto havas nur SSH-demonon kaj neniun prokuron, nenia kvanto da plusendado kreos unu, kaj la konekto estos rifuzita de la fora flanko. Konfirmu, ke la prokuro estas ligita, kiu estas ĝia pordo, kaj ĉu ĝi aŭskultas sur 127.0.0.1 aŭ sur specifa interfaca adreso, ĉar tiu adreso estas la celo de la plusendado.
Se vi konfirmas tion unue, vi ŝparas al vi mem sencimigadon de tunelo, kiu neniam estis ligita al io ajn.
Konstruu la plusendadon kaj legu la komandon
La formo, kiun vi volas, ligas loopback-pordon sur via tekkomputilo kaj ligas ĝin, de la servila flanko, al la adreso de la prokuro tiel, kiel la servilo vidas ĝin.
ssh -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
-L 127.0.0.1:13128:127.0.0.1:3128 [email protected]-N subpremas foran komandon kaj -T subpremas termios-asignadon, ĉar vi volas tunelon, ne ŝelon. La unua loopback-adreso estas tie, kie la tekkomputilo aŭskultas; la dua estas solvata de la SSH-servilo, do 127.0.0.1 tie signifas la prokuron sur tiu maŝino. ExitOnForwardFailure igas la komandon laŭte malsukcesi, se la loka pordo jam estas okupata, anstataŭ komenci seancon, kiu plusendas nenion. Skribu la celan adreson tiel, kiel la servilo solvas ĝin, ĉar nomo, kiun nur via tekkomputilo povas solvi, malsukcesos sur la alia flanko.
La propra politiko de la servilo validas antaŭ ol io ajn el ĉi tio funkcios. AllowTcpForwarding devas permesi ĝin, kaj PermitOpen povas limigi, kiujn celojn kaj pordojn seanco povas atingi, do plusendado, kiun la kliento akceptas, povas tamen esti rifuzita de la servilo. La rifuzo aperas kiel plusenda aŭ kanala eraro ĉe la kliento, kaj legi tiun mesaĝon estas pli rapide ol redakti la komandon.
Direktu unu aplikaĵon al la plusendado
Agordi la aplikaĵon por uzi HTTP-prokuron ĉe http://127.0.0.1:13128, kun legitimiloj se la fora prokuro postulas ilin. Konservu la propran atestilan kontroladon de la aplikaĵo por HTTPS-celoj, ĉar la prokura tunelo ne anstataŭas ĝin. Ĉi tio estas fiksa plusendado de unu servo, do la aplikaĵo devas esti informita pri prokuro anstataŭ lasita malkovri unu.
Rapida kontrolo antaŭ ol agordi ion daŭran: curl -x http://127.0.0.1:13128 -I https://example.com, kiu ekzercas la HTTP CONNECT-metodon, kiun la prokuro devas subteni.
Tenu la aŭtoritaton kie ĝi estis
La fora prokuro ankoraŭ decidas, kiujn celojn kaj metodojn ĝi permesas, kaj SSH-ensaluto ne devus silente doni al ĉiu konto ĝeneralan retan relajson. Ligado al 127.0.0.1 sur la tekkomputilo evitas publikigi la pordon en via loka reto, kaj ĝi ne igas la pordon privata kontraŭ aliaj procezoj sur la sama maŝino. Anstataŭigi tiun ligadon per ĵokera adreso por kunhavigi la prokuron estas kiel neadministrata malfermita relajso ekestas.
La SSH-transporto protektas la salton al la servilo. Trans tiu punkto la prokuro malfermas sian propran konekton, do ordinara HTTP-peto al celo restas ordinara trans la servilo, eĉ se la unua segmento estis ĉifrita.
Kontrolu ambaŭ finojn, poste purigu
Loka tunela agordo kaj sukceso de la fora servo estas malsamaj rezultoj, kaj la elira stato de la komando rakontas al vi nur pri la unua. Kontrolu, ke la aŭskultanto ekzistas per ss -ltn, poste faru permesitan peton de la aplikaĵo kaj peton, kiun la prokuro devus rifuzi. Se ambaŭ kondutas kiel atendite, la vojo estas reala; se la tunelo funkcias kaj ĉiu peto malsukcesas, la prokuro rifuzas aŭ ne povas atingi la celon.
Kiam vi finos, haltigu la posedan SSH-procezon, forigu la prokuran agordon el la aplikaĵo, kaj konfirmu, ke la loka pordo malaperis, anstataŭ lasi aŭskultanton, kiu postvivos la taskon.