SSH NGINX fluxu-errele baten bidez, hura hautsi gabe
PROXY goiburua hura espero duen hartzailearentzako mezua da, eta proxy gisa erregistratutako DNS erregistroa ez da TCP errelea. Ertza eta goiko aldea bereiz konpondu.
Errele baten bidezko SSH publikoa elkarrekin zerikusirik ez duten bi mugatan porrot egiten du, eta bat konpontzeak normalean bestea agerian uzten du. Ertzak HTTP erantzun bat itzultzen du fluxua eraman beharrean, edo erreleak backendak inoiz irakurtzeko adostu ez zuen goiburu bat jartzen du aurretik. Hiru baldintzak erabakitzen dute zein ikusten ari zaren: erregistro publikoak zertara egiten dion benetan, fluxu-blokeak goiko aldera zer bidaltzen duen eta SSH bezeroak zein izen egiaztatzen duen. Landu itzazu hurrenkera horretan.
Bi muga, bi sintoma
Ertzeko hutsegitea HTTP egoera-orri bat SSH bannerra egon beharko lukeen tokian iristea bezala ikusten da. Konexioa TCP mailan osatzen da eta lehen byteak web zerbitzari bati dagokion testua dira. Protokolo-desadostasuna da, ez pakete galdu bat. Gainera, esaten dizu ertzak nahita beste zerbait zerbitzatzen duela izen horretarako.
Goiko aldeko hutsegitea beste modu batera ikusten da. Konexioa sshd-ra iristen da, sshd-k espero duen identifikazio-trukea ez diren byteak irakurtzen ditu, eta saioa hil edo zintzilik geratzen da inoiz gako bat eskaini gabe.
Biak erraz nahasten dira, biek konektatu eta gero huts egiten duen bezero bat sortzen dutelako. Jasotzen duzun lehen protokolo-erantzunak bereizten ditu, eta horregatik dagokio tiketari.
PROXY goiburua mezu bat da, ez etengailu bat
Fluxu-moduluan, proxy_protocol on aginduak NGINX-i esaten dio karga erabilgarriaren aurretik PROXY protokolo-goiburu bat idazteko goiko alderantz. Ez du TCP proxya gaitzen, eta ez du zerikusirik SSH zifratzearekin. Hartzaileari zuzendutako ohar bat da. Hartzaileak irakurri ezin badu, fluxuaren hasieran zabor bihurtzen da.
Hartzen duen zerbitzuak goiburu hori nahita kontsumitu behar du. sshd arruntak SSH identifikazio-trukea espero du konexioaren lehen byte gisa, beraz ustekabeko sarrera batek esku-ematea hausten du zerbitzari hondatua bezala itxura egiten duen moduan.
stream {
server {
listen 2222;
proxy_pass 10.77.0.20:22;
}
}
Zati hori VPN bidez iristeko modukoa den backend baterako errele funtzional baten osotasuna da. Ez da PROXY direktibarik agertzen hartzaileak protokoloa hitz egiten ez duelako, eta absentzia hori erabaki bat da, ez hutsune bat.
Bereizi bi norabideak ere. proxy_protocol listen lerroan jartzeak esan nahi du NGINXek espero duela bere bezeroak goiburua lehenengo bidaltzea; SSH bezero arrunt baterako gaitzeak jendeak normalean konpondu nahi duen arazoaren kontrakoa sortzen du zehazki.
Zer lortzen duen ostalari-izen publikoak benetan
SSH saio batean HTTP 400 orri bat ertzari buruzko froga da. Bidean zerbait HTTP hitz egiten du, eta backendeko gako edo kontu lanak ez du hori aldatuko. Utzi backend aldatzen ertza konpondu arte.
Cloudflare-ren proxy erregistro arruntak bere HTTP eta HTTPS trafiko onartua eramaten du zehaztutako portuetan. Ostalari-izen baterako proxya pizteak ez du TCP errele orokorrik sortzen, eta SSH 443 portura mugitzeak ez du HTTPS bihurtzen.
Bi norabide bideragarri daude. DNS soilik erregistro batek zure TCP errelea seinalatu dezake, eta horrek esposizio-erabakia zure esku uzten du. Bestela, erabili SSH garraioa espresuki dokumentatzen duen produktu bat, bere jatorri, bezero eta sarbide konfigurazioarekin.
Edozein aukeratu, erreleak oraindik VPN bide bat behar du backendera, onartutako konexio bat eta itzulera-bide bat. Bidea ez da hautazkoa alde publikoa funtzionatzen duelako.
Mantendu SSH identitatea egonkor alias baten bidez
Erabiltzaileek normalean beren lehendik dagoen ostalari-izena idazten jarraitu nahi dute. SSH konfigurazioko alias batek hori egin dezake errelean ezer aldatu gabe, eta aldaketa bezeroaren aldean uzten du, dagokion tokian.
Host git.example.com
HostName ssh-entry.example.net
Port 2222
User git
HostKeyAlias git.example.com
HostKeyAlias gabe, OpenSSH-k ostalari-gakoa konektatzen den izenaren pean bilatzen du, beraz erregistroa lekuz aldatzen da eta erabiltzaile bakoitzak gako aldatuaren abisua ikusten du lehen erabileran. Aliasa ezartzeak known-hosts erregistroak egonkor mantentzen ditu konexioa oraindik errelera doan bitartean.
Alias hau SSH-n oinarritutako urruneko biltegietarako soilik da. HTTPS Git URL batek ez dio kontsultatzen, eta urruneko URL tipikoak benetan hornitu duzun garraioarekin bat etorri behar du.
Egin behar ez duzuna abisua desagertarazteko ostalari-gakoaren egiaztapena desaktibatzea da. Horrek birbidalketa konponketak inoiz ukitu nahi izan ez zuen babes bat kentzen du, eta kosmetika-eragozpen bat benetako esposizio bihurtzen du.
Egiaztatu jauzi bakoitza bereiz
Probatu entzule publikoa bere horretan, gero erreletik backendera arteko konexioa errele-ostalaritik, eta ondoren bakarrik bezeroa muturretik muturrera. Hiru proba horietako bakoitzak geruza desberdin bat baztertzen du. Bat saltatzeak esan nahi du gainerako bi emaitzak ezin direla interpretatu. Hiru behaketa, hutsegitea bizi daitekeen hiru leku.
Gorde helmuga-helbidea, portua eta lehen protokolo-byteak emaitza bakoitzarekin. Hirukote horrek ertz-errorea VPN bideratze-arazotik eta SSH autentifikazio-hutsegitetik bereizten du, eta hori konponketa baten eta asmakizun baten arteko aldea da.
Azkenik, dokumentatu aurreikusitako esposizioa. SSH backend pribatu batera eramaten duen TCP errelea perimetro publikoan nahita egindako irekiera bat da, eta beste sarrerako zerbitzu baten berrikuspen bera merezi du.