Opinbert SSH í gegnum endurvarpa mistekst á tveimur ótengdum mörkum, og að laga annað afhjúpar venjulega hið síðara. Annars vegar skilar brúnin HTTP-svari í stað þess að bera straum, hins vegar setur endurvarpinn haus framan við sem bakendinn samþykkti aldrei að lesa. Þrjú skilyrði ráða hvoru þú horfir á: hvert opinbera færslan vísar í raun, hvað straumblokkin sendir uppstreymis og hvaða nafn SSH-biðlarinn sannreynir. Vinnið þau í þeirri röð.

Tvö mörk, tvö einkenni

Bilun á brúninni lítur út eins og HTTP-stöðusíða sem kemur þangað sem SSH-borði ætti að vera. Tengingin klárast á TCP-stigi og fyrstu bætin eru texti sem tilheyrir vefþjóni. Það er ósamræmi í samskiptareglum, ekki tapað pakki. Það segir þér líka að brúnin þjóni viljandi einhverju öðru fyrir það nafn.

Bilun í uppstreyminu lítur öðruvísi út. Tengingin nær til sshd, sshd les bæti sem eru ekki þau auðkenningarskipti sem það á von á, og lotan deyr eða hangir án þess að bjóða nokkurn tíma lykil.

Auðvelt er að rugla þessu tvennu saman því bæði framleiða biðlara sem tengist og mistekst svo. Fyrsta samskiptareglusvarið sem þú færð er það sem greinir þau, og þess vegna á það heima í miðanum.

PROXY-hausinn er skilaboð, ekki rofi

Í straum-einingunni skipar proxy_protocol on NGINX að skrifa PROXY-samskiptaregluhaus inn í uppstreymið fyrir hyrninguna. Það virkjar ekki TCP-millilið og hefur ekkert með SSH-dulkóðun að gera. Það er athugasemd beint til viðtakandans. Ef viðtakandinn getur ekki lesið hana verður hún að rusli í upphafi straumsins.

Móttakandi þjónustan verður að neyta þessa hauss viljandi. Venjulegt sshd á von á SSH-auðkenningarskiptum sem fyrstu bætum tengingarinnar, svo óvænt formáli brýtur handabandið á þann hátt að það lítur út eins og skemmdur þjónn.

stream {
    server {
        listen 2222;
        proxy_pass 10.77.0.20:22;
    }
}

Sá hluti er í heild sinni vinnandi endurvarpi fyrir bakenda sem næst í gegnum VPN-ið. Engin PROXY-fyrirmæli birtast því viðtakandinn talar ekki samskiptareglurnar, og sú fjarvist er ákvörðun en ekki yfirsjón.

Aðskiljið einnig báðar áttir. Að setja proxy_protocol á listen-línuna þýðir að NGINX á von á að eigin biðlari sendi hausinn fyrstur; að virkja það fyrir venjulegan SSH-biðlara framleiðir nákvæmlega hið gagnstæða við vandamálið sem fólk reynir venjulega að leysa.

Hvað opinbera hýsisnafnið nær í raun

HTTP 400 síða í SSH-lotu er sönnun um brúnina. Eitthvað á leiðinni talar HTTP, og engin vinna með lykil eða reikning á bakendanum breytir því. Hættið að breyta bakendanum þar til brúnin er útkljáð.

Venjuleg proxyfærð færsla Cloudflare ber studda HTTP- og HTTPS-umferð sína á skilgreindum portum. Að kveikja á proxy fyrir hýsisnafn býr ekki til almenna TCP-endurvarpa, og að færa SSH á port 443 gerir það ekki að HTTPS.

Tvær færar leiðir eru til. Færsla eingöngu fyrir DNS getur vísað á þinn eigin TCP-endurvarpa, sem setur ákvörðunina um útsetningu í þínar hendur. Að öðrum kosti skal nota vöru sem skjalfestir SSH-flutning skýrt, með eigin uppruna-, biðlara- og aðgangsstillingum.

Hvað sem þú velur þarf endurvarpinn enn VPN-leið að bakendanum, leyfða tengingu og endurkomuleið. Leiðin er ekki valkvæð vegna þess að opinbera hliðin virkar.

Haltu SSH-auðkenninu stöðugu með samheiti

Notendur vilja venjulega halda áfram að slá inn núverandi hýsisnafn sitt. SSH-stillingasamheiti getur gert það án þess að breyta nokkru um endurvarpann, og heldur breytingunni á biðlarahliðinni þar sem hún á heima.

Host git.example.com
    HostName ssh-entry.example.net
    Port 2222
    User git
    HostKeyAlias git.example.com

Án HostKeyAlias leitar OpenSSH að hýsislyklinum undir því nafni sem það tengist, svo færslan færist og hver notandi sér viðvörun um breyttan lykil við fyrstu notkun. Að setja samheitið heldur known-hosts-færslum stöðugum á meðan tengingin fer enn til endurvarpans.

Þetta samheiti á aðeins við um fjartengdar geymslur sem byggja á SSH. HTTPS-Git-slóð spyr ekki um það, og dæmigerð fjartengd slóð verður að passa við flutninginn sem þú bjóst í raun til.

Það sem þú mátt ekki gera er að slökkva á hýsislyklasannreyningu til að losna við viðvörunina. Það fjarlægir vernd sem viðgerðin á framsentingu bað aldrei um að snerta, og breytir snyrtilegu óþægindi í raunverulega útsetningu.

Sannreynið hvert stökk fyrir sig

Prófaðu opinbera hlustandann eitt og sér, svo tenginguna frá endurvarpanum til bakendans frá hýsli endurvarpans, og aðeins þá biðlarann frá enda til enda. Sérhvert þessara þriggja prófa útilokar annan lag. Að sleppa einu þýðir að ekki er hægt að túlka hin tvö niðurstöðurnar. Þrjár athuganir, þrír staðir þar sem bilun getur lifað.

Haltu áfangastaðarheimilisfanginu, portinu og fyrstu samskiptareglubætunum með hverri niðurstöðu. Þessi þrenna greinir brúnarvillu frá VPN-leiðarvandamáli og frá SSH-auðkenningarbilun, og það er munurinn á viðgerð og ágiskun.

Að lokum, skjalfestu fyrirhugaða útsetningu. TCP-endurvarpi sem ber SSH að einkabakenda er viljandi op í opinberu jaðri, og hann á skilið sömu endurskoðun og hver önnur inngönguþjónusta.

Tengdir greinar