SSH yíyípadà fún ẹrọ kan: olùgbọ́ loopback tàbí VPN tí a ti ṣe ọ̀nà?
Ibi ìṣàkóso kan ṣoṣo fún ẹrọ tí ó lè pè jáde nìkan. Àwọn àìpẹ̀ mẹ́ta ló pinnu bóyá ọ̀nà abẹ́lẹ̀ yíyípadà tó tàbí ẹ̀ ń ní ọ̀nà gidi tí a ti ṣe.
Ẹrọ rẹ wà lẹ́yìn NAT ti olùpèsè, ó lè ṣí àwọn ìsopọ̀ jáde, ó sì ń ṣiṣẹ́ sáfà SSH tí kò sẹ́ni tó lè dé. Ìbéèrè tó ń bọ̀ ni a sábà máa ń sọ gẹ́gẹ́ bí "fún un ní VPN", èyí tí ó jẹ́ ìdáhùn kan nínú ọ̀pọ̀. Kí o tó gbà á, pinnu bóyá o nílò ibi TCP ìṣàkóso kan tàbí ọ̀nà gidi tí a ti ṣe lọ sí gbogbo àpòpọ̀ àwọn ẹ̀rọ, nítorí àwọn ìyẹn jẹ́ iṣẹ́ ọ̀tọ̀ọ̀tọ̀ pẹ̀lú ìfarahàn ọ̀tọ̀ọ̀tọ̀.
Ọ̀nà abẹ́lẹ̀ yíyípadà ń dáhùn dáadáa sí ẹ̀yà tóóró. Ẹrọ náà pe hub rẹ, ó béèrè pé kí hub gbọ́ ní ibi loopback, ó sì tẹ̀síwájú ibi yẹn padà sí iṣẹ́ SSH tirẹ̀. Lẹ́yìn náà àwọn alábòójútó dé ọ̀dọ̀ olùgbọ́ nípasẹ̀ hub, kì í ṣe nípasẹ̀ íńtánẹ́ẹ̀tì gbogbo ènìyàn.
Àwọn àìpẹ̀ mẹ́ta tí ó pinnu yíyàn
Kọ wọ́n sílẹ̀ kí ó tó di ìṣètò èyíkéyìí. Wọ́n jẹ́ ààlà láàrin ọ̀nà ìṣàkóso tí ó ní ààlà àti ìgbòkègbodò àwọn ẹ̀rọ, àti dídà wọ́n pọ̀ ni ọ̀nà tí ọ̀nà abẹ́lẹ̀ oní ìlà márùn-ún fi di ẹ̀rọ pẹlẹbẹ tí kò ní olúwa.
| 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 |
Ìlà kẹta ni èyí tí àwọn ènìyàn ń jiyàn lé. Ọ̀nà abẹ́lẹ̀ lọ sí ibi SSH ti ẹrọ kò gbé àwọn aládùúgbò rẹ̀ sínú ẹ̀rọ rẹ, kò sì yẹ kí ó dà bí ẹni pé ó ń ṣe bẹ́ẹ̀ nípasẹ̀ ẹ̀wọ̀n àwọn ìtẹ̀síwájú mìíràn. Bí ìbéèrè náà bá jẹ́ LAN ní ti gidi, sọ bẹ́ẹ̀ kí o sì ṣe àpẹẹrẹ rẹ̀ dípò.
Ẹ̀gbẹ́ hub: àkọsílẹ̀ relay tí ó ní ààlà
Fún ẹrọ kọ̀ọ̀kan ní àkọsílẹ̀ relay tirẹ̀ pẹ̀lú ìjẹ́rìí kọ́kọ́rọ́ gbangba àti láìsí àpèjọ ìbáraẹnisọ̀rọ̀. Match búlọ́ọ̀kù tí ó ní ààlà sí àkọsílẹ̀ yẹn ń pa àṣẹ mọ́ kékeré, kọ́kọ́rọ́ àdáni sì wà lórí ẹrọ náà níbi tí ó yẹ.
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 ni ìlà tí ó lọ́wọ́ nínú. Ó kọ àwọn àpèjọ shell àti ẹ̀ka-sístẹ́mù, nígbà tí ó ṣì ń gba ìtẹ̀síwájú tí ẹrọ nílò, nítorí náà kò ṣeé yí kọ́kọ́rọ́ tí a jí padà sí ìwọlé ìbáraẹnisọ̀rọ̀. PermitListen ń fi àdírẹ́sì àti ibi olùgbọ́ múlẹ̀ ní ẹ̀gbẹ́ hub, àti GatewayPorts no ń pa á mọ́ lórí loopback dípò ṣíṣí rẹ̀ sí ẹ̀rọ tí hub wà lórí.
Dán ìṣètò tí ó ń ṣiṣẹ́ wò kí o tó tún gbé e, kí o sì pa àpèjọ kejì mọ́ ṣíṣí nígbà tí o ń ṣe bẹ́ẹ̀. Match búlọ́ọ̀kù tí ó wá lórí gbogbo ènìyàn láìròtẹ́lẹ̀, tàbí àṣìṣe títẹ̀ nínú orúkọ àṣàyàn, ni ọ̀nà àtẹ̀yìnwá láti fi ara rẹ pa mọ́ jáde kúrò nínú àpótí tí o ń fún ní agbára. Dà ìṣètò tí ó ń ṣiṣẹ́ jáde kí o sì kà àwọn àṣàyàn padà dípò gbígbẹ́kẹ̀lé fáìlì tí o ṣẹ̀ṣẹ̀ kọ. Ṣàkíyèsí pé àtìlẹ́yìn àṣàyàn yàtọ̀ láàrin àwọn ìkọ́, nítorí náà ìlà tí a gbà nínú sáfà tuntun lè jẹ́ kí ó kàn kọ̀ ọ́ sílẹ̀ nínú èyí tí ó ti pẹ́.
Ẹ̀gbẹ́ ẹrọ: ìtẹ̀síwájú tí ó kùnà kíkankíkan
Ẹrọ náà ṣí ìsopọ̀, ó sì béèrè olùgbọ́. Àwọn àdírẹ́sì méjì nínú àríyànjiyàn -R ń túmọ̀ sí ohun ọ̀tọ̀ọ̀tọ̀, kíkà wọ́n láti òsì sí ọ̀tún ni ọ̀nà tí ó yára jù láti rántí èyí tí ó jẹ́ èyí.
ssh -NT \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-R 127.0.0.1:21022:127.0.0.1:22 \
[email protected]
Ẹgbẹ́ òsì ni ibi tí hub yẹ kí ó gbọ́. Ẹgbẹ́ ọ̀tún ni ohun tí ẹrọ ń so mọ́ nígbà tí ìbéèrè bá dé, tí a yanjú láti ẹ̀gbẹ́ ẹrọ náà fúnra rẹ̀. Pààrọ̀ wọ́n ń dá ọ̀nà abẹ́lẹ̀ tí ó gòkè dáadáa tí ó sì ń tẹ̀síwájú lọ sí ibi tí kò tọ́, èyí tí ó burú ju ìkùnà lọ.
ExitOnForwardFailure=yes ń fipá mú kí àṣẹ jáde nígbà tí a kò lè gbé olùgbọ́ tí a béèrè kalẹ̀, nítorí náà àyípoyí ìbẹ̀rẹ̀padà ń sọ òtítọ́ fún ọ dípò fífi àpèjọ tí ó ń ṣiṣẹ́ ìdajì sílẹ̀. Kò sọ ohunkóhun nípa bóyá iṣẹ́ SSH àdúgbò náà wà ní àlàáfíà lẹ́yìn náà, nítorí náà so ó pọ̀ mọ́ olùṣàkóso ìlànà àti ìdánwò ìsopọ̀ gidi lẹ́ẹ̀kọ̀ọ̀kan.
Má ṣe fi àmì ìgbé-ẹ̀rọ rọ́pò àdírẹ́sì gbígbọ́ loopback láti yẹra fún ìfò mìíràn. Ìyàtọ̀ yẹn kan náà ni ìyàtọ̀ láàrin ọ̀nà ìṣàkóso àti ibi tí gbogbo ènìyàn lè dé, ó sì sábà ṣẹlẹ̀ nígbà àtúnṣe àṣìṣe kí ó sì wà níbẹ̀. Bí ẹlẹgbẹ́ kan kò bá lè dé ibi náà nípasẹ̀ hub, tún ìṣètò ìfò ṣe dípò fífi ìdè gbòòrò síi. Loopback ni gbogbo àríyànjiyàn ààbò ti àpẹẹrẹ yìí.
Ìwọlé alábòójútó nípasẹ̀ hub
Alábòójútó tí ó ní àkọsílẹ̀ lasan lórí hub lè fò nípasẹ̀ rẹ̀ sí ibi tí a tẹ̀síwájú. A kò fi àkọsílẹ̀ relay ṣe é fún èyí, ìyẹn sì ni kókó fífi wọ́n sọ́tọ̀.
ssh -J [email protected] -o HostKeyAlias=device-7 \
-p 21022 [email protected]
Ṣàyẹ̀wò kọ́kọ́rọ́ agbàlejò ẹrọ náà lábẹ́ orúkọ àpèlẹ́ tí o yàn, nítorí kọ́kọ́rọ́ yẹn ni ó ń dán ẹrọ náà mọ̀ ní ìparí ẹ̀wọ̀n, ọ̀nà abẹ́lẹ̀ sì jẹ́ ìrìnàjò nìkan. Ìwọlé láti ìparí dé ìparí ṣì ń jẹ́rìí sí ẹ̀gbẹ́ méjèèjì; ọ̀nà abẹ́lẹ̀ tí ó parí lórí hub tí a pín kò sọ ọ́ di ọ̀nà ìgbẹ́kẹ̀lé fúnra rẹ̀.
Gba ẹ̀tọ́ ìgbésí ayé
Ṣiṣẹ́ àṣẹ ẹrọ náà lábẹ́ olùṣàkóso ìlànà pẹ̀lú ìṣẹ̀lẹ̀ kan ṣoṣo tí ó ń ṣiṣẹ́ àti ìlànà ìbẹ̀rẹ̀padà tí o yàn pẹ̀lú ìmọ̀. Àwọn àṣàyàn keepalive ń dá alábàákẹ́gbẹ́ tí ó kú mọ̀; wọn kì í sọ ìlànà tí ó jáde di alààyè.
Lẹ́yìn náà kọ ìlànà ìyọkúrò. Ẹrọ kọ̀ọ̀kan ń gba olùgbọ́ tirẹ̀ àti kọ́kọ́rọ́ tirẹ̀, nítorí náà ìyọkúrò túmọ̀ sí fífi àkọsílẹ̀ yẹn rẹ̀ àti yíyọ kọ́kọ́rọ́ yẹn kúrò, kì í ṣe yíyí àṣírí tí gbogbo ẹgbẹ́ ń pín.
Níkẹyìn, rántí ohun tí loopback ń fún ọ. Ó ń fi ìfarahàn ẹ̀rọ lélẹ̀, kò sì ṣe ohunkóhun nípa àwọn olùlò àdúgbò mìíràn lórí hub tí a pín, nítorí náà ìlànà ìwọlé ti hub fúnra rẹ̀ gbọ́dọ̀ tọ̀nà. Ìtọ́kasí sshd_config ń ṣàkọsílẹ̀ ọ̀kọ̀ọ̀kan àwọn àṣàyàn tí a lò lókè, ó sì yẹ láti kà àwọn apá ìtẹ̀síwájú ní kíkún kí o tó gbòòrò èyíkéyìí nínú wọn.