SSH ya kurudi nyuma kwa kifaa kimoja: msikilizaji wa loopback au VPN iliyoelekezwa?
Bandari moja ya usimamizi kwa kifaa kinachoweza kupiga simu kwenda nje pekee. Masharti matatu yanaamua kama handaki la kurudi nyuma linatosha au unahitaji njia halisi iliyoelekezwa.
Kifaa chako kiko nyuma ya NAT ya mtoa huduma, kinaweza kufungua miunganisho ya kwenda nje, na kinaendesha seva ya SSH ambayo hakuna anayeweza kuifikia. Ombi linalofika kwa kawaida huwekwa kama "ipe VPN", ambayo ni jibu moja kati ya kadhaa. Kabla ya kuikubali, amua kama unahitaji bandari moja ya TCP ya usimamizi au njia iliyoelekezwa kwa subnet nzima, kwa sababu hizo ni miradi tofauti zenye mfiduo tofauti.
Handaki la kurudi nyuma hujibu vizuri toleo dogo. Kifaa hupiga simu kwenye kitovu chako, hukiomba kitovu kusikiliza kwenye bandari ya loopback, na huelekeza bandari hiyo kurudi kwenye huduma yake ya SSH. Kisha wasimamizi hufikia msikilizaji kupitia kitovu, si kupitia intaneti ya umma.
Masharti matatu yanayoamua chaguo
Yaandike kabla ya usanidi wowote. Ni mpaka kati ya kiingilio cha usimamizi kilichowekewa mipaka na upanuzi wa mtandao, na kuyachanganya ndio njia ambayo handaki la mistari mitano linakuwa mtandao tambarare usio na mmiliki.
| 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 |
Safu ya tatu ndiyo ambayo watu hujadili. Handaki kwa bandari ya SSH ya kifaa hakiweki majirani wake kwenye mtandao wako, na haipaswi kuonekana kama linafanya hivyo kupitia mnyororo wa uelekezaji zaidi. Ikiwa hitaji ni LAN kweli, sema hivyo na ubuni hilo badala yake.
Upande wa kitovu: akaunti ya relay iliyowekewa mipaka
Mpe kila kifaa akaunti yake ya relay yenye uthibitishaji wa ufunguo wa umma na bila kikao cha mwingiliano. Match kizuizi kilichowekewa mipaka kwa akaunti hiyo huweka ruhusa ndogo, na ufunguo wa faragha unabaki kwenye kifaa mahali unapopaswa.
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 ndiyo mstari wa kuvutia. Inakataa vikao vya shell na mifumo ndogo huku ikiruhusu uelekezaji ambao kifaa kinahitaji, kwa hivyo ufunguo ulioibiwa hauwezi kugeuzwa kuwa kuingia kwa mwingiliano. PermitListen hufunga anwani na bandari ya msikilizaji upande wa kitovu, na GatewayPorts no huishikilia kwenye loopback badala ya kuifungua kwa mtandao ambao kitovu kiko.
Jaribu usanidi unaofaa kabla ya kupakia upya, na weka kikao cha pili wazi unapofanya hivyo. Match kizuizi kinachotumika kwa kila mtu kwa bahati mbaya, au makosa ya uchapaji katika jina la chaguo, ndiyo njia ya kawaida ya kujifungia nje ya sanduku unaloimarisha. Toka usanidi unaoendesha na usome chaguo tena badala ya kuamini faili uliyoandika hivi punde. Kumbuka kuwa msaada wa chaguo hutofautiana kati ya miundo, kwa hivyo mstari unaokubaliwa kwenye seva mpya unaweza kupuuzwa kwa urahisi na ya zamani.
Upande wa kifaa: uelekezaji unaoshindwa kwa sauti
Kifaa hufungua muunganisho na kuomba msikilizaji. Anwani mbili katika hoja -R zinamaanisha mambo tofauti, na kuzisoma kutoka kushoto kwenda kulia ndiyo njia ya haraka zaidi ya kukumbuka ipi ni ipi.
ssh -NT \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-R 127.0.0.1:21022:127.0.0.1:22 \
[email protected]
Jozi ya kushoto ndiyo mahali kitovu kinapaswa kusikiliza. Jozi ya kulia ndiyo kile kifaa hujiunga nacho ombi linapofika, likitatuliwa kutoka upande wa kifaa chenyewe. Kuzibadilisha huzalisha handaki linaloinuka safi na kuelekeza mahali pasipofaa, jambo ambalo ni baya kuliko kushindwa.
ExitOnForwardFailure=yes hulazimisha amri kutoka wakati msikilizaji aliyeombwa hauwezi kusimamishwa, kwa hivyo mzunguko wa kuanzisha upya hukuambia ukweli badala ya kuacha kikao kinachofanya kazi nusu. Haisemi chochote kuhusu kama huduma ya SSH ya ndani ni nzuri baadaye, kwa hivyo unganisha na msimamizi wa michakato na jaribio halisi la muunganisho mara kwa mara.
Kamwe usibadilishe anwani ya kusikiliza ya loopback na kadi ya porini ili kuepuka kuruka kwa ziada. Mabadiliko hayo moja ndiyo tofauti kati ya njia ya usimamizi na bandari inayofikiwa na umma, na kwa kawaida hutokea wakati wa utatuzi wa hitilafu kisha hubaki. Ikiwa mwenzako hawezi kufikia bandari kupitia kitovu, rekebisha usanidi wa kuruka badala ya kupanua kifungo. Loopback ndiyo hoja yote ya usalama ya muundo huu.
Ufikiaji wa msimamizi kupitia kitovu
Msimamizi mwenye akaunti ya kawaida kwenye kitovu anaweza kuruka kupitia hapo hadi bandari iliyoelekezwa. Akaunti ya relay haitumiwi kwa hili, na hiyo ndiyo hoja ya kuziweka tofauti.
ssh -J [email protected] -o HostKeyAlias=device-7 \
-p 21022 [email protected]
Thibitisha ufunguo wa mwenyeji wa kifaa chini ya jina la utani ulilochagua, kwa sababu ufunguo huo hutambua kifaa mwisho wa mnyororo na handaki ni usafirishaji tu. Kuingia kutoka mwisho hadi mwisho bado huthibitisha pande zote mbili; handaki linaloishia kwenye kitovu kilichoshirikiwa halilifanyi lenyewe kuwa njia inayoaminika.
Miliki mzunguko wa maisha
Endesha amri ya kifaa chini ya msimamizi wa michakato ukiwa na mfano mmoja amilifu hasa na sera ya kuanzisha upya uliyochagua kwa makusudi. Chaguo za keepalive hutambua mwenza aliyekufa; hazifufui mchakato uliotoka.
Kisha andika utaratibu wa kuondoa. Kila kifaa kinapata msikilizaji wake na ufunguo wake, kwa hivyo kuondoa kunamaanisha kubatilisha akaunti hiyo na kuondoa ufunguo huo, si kuzungusha siri inayoshirikiwa na kundi lote.
Hatimaye, kumbuka kile loopback inakupa. Inapunguza mfiduo wa mtandao na haifanyi chochote kuhusu watumiaji wengine wa ndani kwenye kitovu kilichoshirikiwa, kwa hivyo sera ya ufikiaji ya kitovu yenyewe bado inapaswa kuwa sahihi. Rejea ya sshd_config inaandika kila moja ya chaguo zilizotumika hapo juu, na inafaa kusoma sehemu za uelekezaji kwa ukamilifu kabla ya kupanua yoyote kati yao.