Reverse SSH fir een eenzelt Gerät: Loopback-Lauschter oder geroutete VPN?
Ee Verwaltungsport fir e Gerät, dat nëmmen no bausse ka wielen. Dräi Konditioune entscheeden, ob en ëmgedréite Tunnel duergeet oder ob Dir e richteg geroutete Wee braucht.
Äert Gerät sëtzt hannert dem NAT vun engem Bedreiwer, et kann ausgängesch Verbindungen opmaachen, an et bedreift en SSH-Server, deen keen erreeche kann. D'Ufro, déi ukënnt, gëtt meeschtens als "gitt him eng VPN" formuléiert, wat eng Äntwert ënner méi ass. Ier Dir se akzeptéiert, entscheet, ob Dir een administrativen TCP-Port braucht oder e geroutete Wee an en ganzt Subnetz, well dat verschidde Projeten mat verschiddener Expositioun sinn.
En ëmgedréiten Tunnel äntwert gutt op déi schmuel Versioun. D'Gerät wielt op Ären Hub, freet den Hub, op engem Loopback-Port ze lauschteren, a leet dee Port zréck op säin eigenen SSH-Service. Duerno erreechen d'Administrateuren de Lauschterer iwwer den Hub, net iwwer den ëffentlechen Internet.
Dräi Konditiounen, déi d'Wiel entscheeden
Schreift se op virun all Konfiguratioun. Si sinn d'Grenz tëscht engem begrenzten Verwaltungsagank an enger Netzwierkerweiderung, a si ze vermëschen ass de Wee, wéi en Tunnel vu fënnef Zeilen en herrenloost flaacht Netzwierk gëtt.
| Condition | Reverse tunnel fits | Something else is needed |
|---|---|---|
| How many services must be reachable? | One, or a small fixed set on loopback | Anything that needs many ports or dynamic discovery |
| Who connects, and how are they authenticated? | Named administrators with their own hub accounts | Third parties, or anything needing per-flow audit you do not control |
| Does the device's own LAN need to be reachable? | No | Yes, so a routed VPN or a managed platform is the honest answer |
Déi drëtt Zeil ass déi, iwwer déi d'Leit diskutéieren. En Tunnel op den SSH-Port vun engem Gerät setzt seng Noperen net op Äert Netzwierk, an et soll net esou ausgesinn, wéi wann et dat duerch eng Kette vun weideren Viruleedunge géif. Wann d'Ufuerderung wierklech d'LAN ass, soot et a konzipéiert déi amplaz.
Hub-Säit: e begrenzte Relais-Konto
Gitt all Gerät säin eegene Relais-Konto mat Ëffentleche-Schlëssel-Authentifikatioun an ouni interaktiv Sëtzung. Match Block, deen op dee Konto begrenzt ass, hält d'Erlaabnes kleng, an de private Schlëssel bleift um Gerät, wou en higehéiert.
Match User relay-dev-7
AuthenticationMethods publickey
PubkeyAuthentication yes
AllowTcpForwarding remote
PermitListen 127.0.0.1:21022
GatewayPorts no
MaxSessions 0
PermitTTY no
X11Forwarding no
AllowAgentForwarding no
MaxSessions 0 ass déi interessant Zeil. Si refuséiert Shell- a Subsystem-Sëtzungen an erlaabt awer d'Viruleedung, déi d'Gerät braucht, sou datt en geklaute Schlëssel net an en interaktive Login ëmgewandelt ka ginn. PermitListen fixéiert d'Adress an de Port vum Lauschterer op der Hub-Säit, an GatewayPorts no hält en um Loopback, amplaz en op dat Netzwierk opzemaachen, op deem den Hub steet.
Test d'effektiv Konfiguratioun virum Nei-Lueden, a haalt währenddeem eng zweet Sëtzung op. Match Block, deen duerch Onfall fir all eenzele gëllt, oder en Tippfehler an engem Optiounsnumm, ass de klassesche Wee, fir Iech aus der Këscht auszespären, déi Dir häert. Dump d'lafend Konfiguratioun a liest d'Optiounen zréck, amplaz der Datei ze vertrauen, déi Dir just geschriwwen hutt. Notéiert, datt d'Optiounsënnerstëtzung tëscht Builds ënnerscheet, sou datt eng Zeil, déi en neien Server akzeptéiert, vun engem eelere einfach ignoréiert ka ginn.
Gerät-Säit: Viruleedung, déi haart feelt
D'Gerät mécht d'Verbindung op a freet de Lauschterer un. Déi zwou Adressen am -R Argument bedeiten Ënnerschiddleches, a se vu lénks no riets ze liesen ass de séierste Wee, fir sech ze merken, wéi eng wéi eng ass.
ssh -NT \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-R 127.0.0.1:21022:127.0.0.1:22 \
[email protected]
Déi lénks Pair ass, wou den Hub lauschtere soll. Déi riets Pair ass, mat wéi engem d'Gerät sech verbënnt, wann eng Ufro ukënnt, vun der Säit vum Gerät selwer opgeléist. Si ze vertauschen ergëtt en Tunnel, deen propper eropkënnt an op déi falsch Plaz viruleet, wat schlëmmer ass wéi e Feeler.
ExitOnForwardFailure=yes léisst de Kommando ophalen, wann de gefrote Lauschterer net opgebaut ka ginn, sou datt eng Restart-Schleif Iech d'Wourecht seet, amplaz eng hallef funktionéierend Sëtzung ze hannerloossen. Si seet näischt driwwer, ob den lokalen SSH-Service spéider gesond ass, also kombinéiert se mat engem Prozessmanager an engem heiansdo echte Verbindungstest.
Ersetzt ni d'Loopback-Lauschadress duerch en Joker, fir en zousätzleche Sprong ze vermeiden. Deeen eenzege Changement ass den Ënnerscheed tëscht engem Verwaltungswee an engem ëffentlech erreechbaren Port, an et geschitt meeschtens beim Debuggen a bleift dann. Wann e Kolleg de Port iwwer den Hub net erreecht, reparéiert d'Jump-Konfiguratioun amplaz d'Bindung ze verbreeden. Loopback ass dat ganzt Sécherheetsargument vun dësem Design.
Administrateur-Zougrëff iwwer den Hub
En Administrateur mat engem gewéinleche Konto um Hub ka duerch en op de virugeleete Port spréngen. De Relais-Konto gëtt dofir net benotzt, an dat ass just de Punkt, fir se getrennt ze halen.
ssh -J [email protected] -o HostKeyAlias=device-7 \
-p 21022 [email protected]
Verifizéiert de Host-Schlëssel vum Gerät ënner dem Alias, deen Dir gewielt hutt, well dee Schlëssel identifizéiert d'Gerät um Enn vun der Kette an den Tunnel ass nëmmen Transport. Den End-zu-End-Login authentifizéiert nach ëmmer béid Enner; en Tunnel, deen op engem gedeelte Hub ophält, mécht en net vu sech aus zu engem vertrauenswürdege Wee.
Iwwerhëlt den Liewenszyklus
Fuert de Gerätskommando ënner engem Prozessmanager mat genau enger aktiver Instanz an enger Restart-Politik, déi Dir bewosst gewielt hutt. D'Keepalive-Optiounen erkennen en doudegen Partner; si erwächen keen Prozess, deen erausgaang ass.
Schreift duerno d'Ausserbetribsprozedur. All Gerät kritt säin eegene Lauschterer a säin eegene Schlëssel, also heescht ofbauen dee Konto ze widerrufen an dee Schlëssel ze läschen, net e geheim ze rotéieren, dat déi ganz Flott deelt.
Zum Schluss denkt drun, wat Loopback Iech bréngt. Et begrenzt d'Netzwierkexpositioun an et mécht näischt fir aner lokal Benotzer op engem gedeelte Hub, also muss d'Zougrëffspolitik vum Hub selwer nach ëmmer richteg sinn. sshd_config-Referenz dokumentéiert jiddereng vun den uewe benotzten Optiounen, an et ass der Méi wäert, d'Viruleedungssektiounen ganz ze liesen, ier Dir eng dovun erweidert.