Nasa likod ng NAT ng carrier ang aparato mo, makakabukas ito ng papalabas na koneksyon, at nagpapatakbo ng SSH server na walang makakaabot. Ang kahilingang dumarating ay karaniwang binabalangkas bilang "bigyan ito ng VPN", na isa sa ilang sagot. Bago mo ito tanggapin, magpasya kung kailangan mo ng isang administratibong TCP port o routed na landas patungo sa buong subnet, dahil magkaibang proyekto iyon na may magkaibang pagkakalantad.

Mahusay na sinasagot ng baliktad na tunnel ang makitid na bersyon. Tumatawag ang aparato sa hub mo, hinihiling sa hub na makinig sa isang loopback port, at ipinapasa ang port na iyon pabalik sa sarili nitong serbisyo ng SSH. Pagkatapos, naaabot ng mga administrador ang listener sa pamamagitan ng hub, hindi sa pampublikong internet.

Tatlong kundisyon na nagtatakda ng pagpili

Isulat ang mga ito bago ang anumang configuration. Ito ang hangganan sa pagitan ng limitadong pasukan sa pamamahala at ng pagpapalawak ng network, at ang paghahalo sa mga ito ang dahilan kung bakit nagiging flat na network na walang may-ari ang limang linyang tunnel.

ConditionReverse tunnel fitsSomething else is needed
How many services must be reachable?One, or a small fixed set on loopbackAnything that needs many ports or dynamic discovery
Who connects, and how are they authenticated?Named administrators with their own hub accountsThird parties, or anything needing per-flow audit you do not control
Does the device's own LAN need to be reachable?NoYes, so a routed VPN or a managed platform is the honest answer

Ang ikatlong hilera ang pinagdedebatihan ng mga tao. Ang tunnel patungo sa SSH port ng aparato ay hindi naglalagay ng mga kapitbahay nito sa network mo, at hindi dapat gawing mukhang ginagawa nito iyon sa pamamagitan ng kadena ng karagdagang pagpapasa. Kung ang pangangailangan ay talagang LAN, sabihin ito at idisenyo iyon sa halip.

Gilid ng hub: limitadong relay account

Bigyan ang bawat aparato ng sarili nitong relay account na may public-key authentication at walang interactive na session. Match ang block na nakasaklaw sa account na iyon ay nagpapanatili ng pahintulot na maliit, at ang pribadong key ay nananatili sa aparatong dapat nitong kalagyan.

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 ang kawili-wiling linya. Tinatanggihan nito ang shell at subsystem na session habang pinapayagan pa rin ang pagpapasang kailangan ng aparato, kaya ang nakaw na key ay hindi magagawang interactive na login. PermitListen ipinipirmi ang address at port ng listener sa gilid ng hub, at GatewayPorts no pinapanatili ito sa loopback sa halip na buksan ito sa network kung saan naroroon ang hub.

Subukan ang epektibong configuration bago mag-reload, at panatilihing bukas ang pangalawang session habang ginagawa ito. Match ang block na aksidenteng naaangkop sa lahat, o typo sa pangalan ng opsyon, ay ang klasikong paraan para ma-lock ang sarili mo sa labas ng kahon na pinapalakas mo. I-dump ang tumatakbong configuration at basahin muli ang mga opsyon sa halip na magtiwala sa file na isinulat mo lang. Tandaan na iba ang suporta sa opsyon sa iba't ibang build, kaya ang linyang tinatanggap sa mas bagong server ay maaaring balewalain lang ng mas luma.

Gilid ng aparato: pagpapasang bigong tumunog

Binubuksan ng aparato ang koneksyon at humihiling ng listener. Ang dalawang address sa argumento -R ay may magkaibang kahulugan, at ang pagbasa sa mga ito mula kaliwa pakanan ang pinakamabilis na paraan para matandaan kung alin ang alin.

ssh -NT \
    -o ExitOnForwardFailure=yes \
    -o ServerAliveInterval=30 \
    -o ServerAliveCountMax=3 \
    -R 127.0.0.1:21022:127.0.0.1:22 \
    [email protected]

Ang kaliwang pares ang lugar kung saan dapat makinig ang hub. Ang kanang pares ang konektado ng aparato kapag may kahilingang dumarating, na niresolba mula sa sariling gilid ng aparato. Ang pagpapalit ng mga ito ay lumilikha ng tunnel na malinis na bumabangon at nagpapasa sa maling lugar, na mas masahol pa kaysa sa pagkabigo.

ExitOnForwardFailure=yes pinipilit ang utos na lumabas kapag hindi maitatag ang hinihiling na listener, kaya ang restart loop ay nagsasabi sa iyo ng totoo sa halip na mag-iwan ng kalahating gumaganang session. Wala itong sinasabi tungkol sa kung malusog ang lokal na serbisyo ng SSH mamaya, kaya ipares ito sa isang process manager at paminsan-minsang tunay na pagsubok ng koneksyon.

Huwag kailanman palitan ang loopback listen address ng wildcard para makaiwas sa dagdag na paglukso. Ang nag-iisang pagbabagong iyon ang pagkakaiba ng landas ng pamamahala at ng port na naaabot ng publiko, at kadalasan itong nangyayari habang nagde-debug at pagkatapos ay nananatili. Kung hindi maabot ng katrabaho ang port sa pamamagitan ng hub, ayusin ang jump configuration sa halip na palawakin ang bind. Loopback ang buong argumento ng seguridad ng disenyong ito.

Pag-access ng administrador sa pamamagitan ng hub

Ang administrador na may ordinaryong account sa hub ay makakalukso roon patungo sa ipinasa na port. Hindi ginagamit ang relay account para dito, at iyon mismo ang punto ng paghihiwalay sa kanila.

ssh -J [email protected] -o HostKeyAlias=device-7 \
    -p 21022 [email protected]

I-verify ang host key ng aparato sa ilalim ng alias na pinili mo, dahil ang key na iyon ang kumikilala sa aparato sa dulo ng kadena at ang tunnel ay transportasyon lamang. Ang end-to-end na login ay nagpapatotoo pa rin sa magkabilang dulo; ang tunnel na nagtatapos sa isang shared hub ay hindi ito ginagawang pinagkakatiwalaang landas nang mag-isa.

Angkinin ang lifecycle

Patakbuhin ang utos ng aparato sa ilalim ng process manager na may eksaktong isang aktibong instance at patakarang restart na sinadya mong pinili. Natutukoy ng keepalive na opsyon ang patay na kapareha; hindi nila binubuhay ang prosesong umalis na.

Pagkatapos, isulat ang pamamaraan ng pag-decommission. Bawat aparato ay may sariling listener at sariling key, kaya ang pag-decommission ay nangangahulugang bawiin ang account na iyon at alisin ang key na iyon, hindi ang pag-ikot ng secret na pinagsasaluhan ng buong fleet.

Sa huli, tandaan kung ano ang ibinibigay sa iyo ng loopback. Nililimitahan nito ang pagkakalantad sa network at wala itong ginagawa sa iba pang lokal na gumagamit sa isang shared hub, kaya ang patakaran sa pag-access ng hub mismo ay kailangan pa ring tama. Sanggunian ng sshd_config idinodokumento ang bawat isa sa mga opsyong ginamit sa itaas, at sulit basahin nang buo ang mga seksyon ng pagpapasa bago palawakin ang alinman sa mga ito.

Kaugnay na mga artikulo