ഒരു ഉപകരണത്തിനായുള്ള റിവേഴ്സ് SSH: ലൂപ്പ്ബാക്ക് ശ്രോതാവോ റൂട്ട് ചെയ്ത VPN-യോ?
പുറത്തേക്ക് മാത്രം ഡയൽ ചെയ്യാൻ കഴിയുന്ന ഉപകരണത്തിനായി ഒരു മാനേജ്മെന്റ് പോർട്ട്. റിവേഴ്സ് ടണൽ മതിയോ അതോ യഥാർത്ഥ റൂട്ട് ചെയ്ത പാത വേണോ എന്ന് മൂന്ന് വ്യവസ്ഥകൾ തീരുമാനിക്കുന്നു.
നിങ്ങളുടെ ഉപകരണം കാരിയർ NAT-ന് പിന്നിലാണ്, അത് പുറത്തേക്കുള്ള കണക്ഷനുകൾ തുറക്കാൻ കഴിയും, ആർക്കും എത്താൻ കഴിയാത്ത ഒരു SSH സർവർ പ്രവർത്തിപ്പിക്കുന്നു. വരുന്ന അഭ്യർത്ഥന സാധാരണയായി "അതിന് ഒരു VPN നൽകുക" എന്ന് രൂപപ്പെടുത്തുന്നു, അത് പല ഉത്തരങ്ങളിൽ ഒന്നാണ്. അത് സ്വീകരിക്കുന്നതിന് മുമ്പ് ഒരു അഡ്മിനിസ്ട്രേറ്റീവ് TCP പോർട്ട് വേണോ അതോ മുഴുവൻ സബ്നെറ്റിലേക്കുള്ള റൂട്ട് ചെയ്ത പാത വേണോ എന്ന് തീരുമാനിക്കുക, കാരണം അവ വ്യത്യസ്ത എക്സ്പോഷറുള്ള വ്യത്യസ്ത പ്രോജക്റ്റുകളാണ്.
റിവേഴ്സ് ടണൽ ചെറിയ പതിപ്പിന് നന്നായി ഉത്തരം നൽകുന്നു. ഉപകരണം നിങ്ങളുടെ ഹബ്ബിലേക്ക് ഡയൽ ചെയ്യുന്നു, ലൂപ്പ്ബാക്ക് പോർട്ടിൽ കേൾക്കാൻ ഹബ്ബിനോട് ആവശ്യപ്പെടുന്നു, ആ പോർട്ട് തന്റെ സ്വന്തം SSH സേവനത്തിലേക്ക് തിരികെ അയയ്ക്കുന്നു. തുടർന്ന് അഡ്മിനിസ്ട്രേറ്റർമാർ പൊതു ഇന്റർനെറ്റിലൂടെയല്ല, ഹബ്ബിലൂടെ ശ്രോതാവിനെ എത്തുന്നു.
തിരഞ്ഞെടുപ്പ് തീരുമാനിക്കുന്ന മൂന്ന് വ്യവസ്ഥകൾ
ഏതെങ്കിലും കോൺഫിഗറേഷന് മുമ്പ് ഇവ എഴുതി വയ്ക്കുക. അവ പരിമിതമായ മാനേജ്മെന്റ് പ്രവേശനവും നെറ്റ്വർക്ക് വിപുലീകരണവും തമ്മിലുള്ള അതിർത്തിയാണ്, അവ കൂട്ടിക്കലർത്തുന്നതാണ് അഞ്ച് വരിയുള്ള ഒരു ടണലിനെ ഉടമയില്ലാത്ത പരന്ന നെറ്റ്വർക്കാക്കി മാറ്റുന്ന വഴി.
| 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 |
മൂന്നാമത്തെ വരിയാണ് ആളുകൾ തർക്കിക്കുന്നത്. ഒരു ഉപകരണത്തിന്റെ SSH പോർട്ടിലേക്കുള്ള ടണൽ അതിന്റെ അയൽക്കാരെ നിങ്ങളുടെ നെറ്റ്വർക്കിൽ ചേർക്കുന്നില്ല, കൂടുതൽ ഫോർവേഡുകളുടെ ഒരു ശൃംഖലയിലൂടെ അങ്ങനെയാണെന്ന് തോന്നിപ്പിക്കരുത്. ആവശ്യകത യഥാർത്ഥത്തിൽ LAN ആണെങ്കിൽ, അത് പറയുക, പകരം അത് രൂപകൽപ്പന ചെയ്യുക.
ഹബ്ബ് വശം: പരിമിതമായ റിലേ അക്കൗണ്ട്
ഓരോ ഉപകരണത്തിനും പൊതു കീ പ്രാമാണീകരണത്തോടെയും ഇന്ററാക്ടീവ് സെഷനില്ലാതെയും അതിന്റേതായ റിലേ അക്കൗണ്ട് നൽകുക. Match ബ്ലോക്ക് ആ അക്കൗണ്ടിലേക്ക് പരിമിതപ്പെടുത്തിയിരിക്കുന്നതിനാൽ അനുമതി ചെറുതായി നിലനിൽക്കുന്നു, സ്വകാര്യ കീ അതിന്റെ സ്ഥാനമുള്ള ഉപകരണത്തിൽ തന്നെ തുടരുന്നു.
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 രസകരമായ വരിയാണ്. ഇത് ഷെൽ, സബ്സിസ്റ്റം സെഷനുകൾ നിരസിക്കുമ്പോൾ ഉപകരണത്തിന് ആവശ്യമായ ഫോർവേഡിംഗ് അനുവദിക്കുന്നു, അതിനാൽ മോഷ്ടിച്ച കീ ഇന്ററാക്ടീവ് ലോഗിനായി മാറ്റാൻ കഴിയില്ല. PermitListen ഹബ്ബ് വശത്തെ ശ്രോതാവിന്റെ വിലാസവും പോർട്ടും പിൻ ചെയ്യുന്നു, കൂടാതെ GatewayPorts no ഹബ്ബ് സ്ഥിതി ചെയ്യുന്ന നെറ്റ്വർക്കിലേക്ക് തുറക്കുന്നതിന് പകരം അതിനെ ലൂപ്പ്ബാക്കിൽ നിർത്തുന്നു.
വീണ്ടും ലോഡ് ചെയ്യുന്നതിന് മുമ്പ് ഫലപ്രദമായ കോൺഫിഗറേഷൻ പരിശോധിക്കുക, അത് ചെയ്യുന്ന സമയത്ത് രണ്ടാമത്തെ സെഷൻ തുറന്ന് വയ്ക്കുക. Match ബ്ലോക്ക് അബദ്ധത്തിൽ എല്ലാവർക്കും ബാധകമാകുകയോ ഒരു ഓപ്ഷന്റെ പേരിൽ ടൈപ്പോ ഉണ്ടാകുകയോ ചെയ്താൽ, നിങ്ങൾ കഠിനമാക്കുന്ന ബോക്സിൽ നിന്ന് സ്വയം പുറത്ത് പൂട്ടുന്ന പരമ്പരാഗത വഴിയാണത്. പ്രവർത്തിക്കുന്ന കോൺഫിഗറേഷൻ ഡംപ് ചെയ്ത്, ഇപ്പോൾ എഴുതിയ ഫയലിനെ വിശ്വസിക്കുന്നതിന് പകരം ഓപ്ഷനുകൾ വീണ്ടും വായിക്കുക. ഓപ്ഷൻ പിന്തുണ ബിൽഡുകൾക്കിടയിൽ വ്യത്യാസപ്പെടുന്നു എന്നത് ശ്രദ്ധിക്കുക, അതിനാൽ പുതിയ സർവറിൽ സ്വീകരിച്ച ഒരു വരി പഴയത് വെറുതെ അവഗണിച്ചേക്കാം.
ഉപകരണ വശം: വലിയ ശബ്ദത്തോടെ പരാജയപ്പെടുന്ന ഫോർവേഡിംഗ്
ഉപകരണം കണക്ഷൻ തുറക്കുന്നു, ശ്രോതാവിനെ അഭ്യർത്ഥിക്കുന്നു. ആർഗ്യുമെന്റിലെ രണ്ട് വിലാസങ്ങൾ -R വ്യത്യസ്ത അർത്ഥങ്ങൾ ഉള്ളവയാണ്, അവ ഇടത്തുനിന്ന് വലത്തോട്ട് വായിക്കുന്നതാണ് ഏതാണ് ഏതെന്ന് ഓർക്കാനുള്ള വേഗതയേറിയ വഴി.
ssh -NT \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-R 127.0.0.1:21022:127.0.0.1:22 \
[email protected]
ഇടത് ജോടി ഹബ്ബ് കേൾക്കേണ്ട സ്ഥലമാണ്. വലത് ജോടി, അഭ്യർത്ഥന വരുമ്പോൾ ഉപകരണം ബന്ധിപ്പിക്കുന്ന ലക്ഷ്യമാണ്, അത് ഉപകരണത്തിന്റെ സ്വന്തം വശത്തുനിന്ന് പരിഹരിക്കുന്നു. അവ പരസ്പരം മാറ്റിയാൽ വൃത്തിയായി ഉയർന്ന് തെറ്റായ സ്ഥലത്തേക്ക് ഫോർവേഡ് ചെയ്യുന്ന ഒരു ടണൽ ഉണ്ടാകും, അത് പരാജയത്തെക്കാൾ മോശമാണ്.
ExitOnForwardFailure=yes ആവശ്യപ്പെട്ട ശ്രോതാവ് സ്ഥാപിക്കാൻ കഴിയാത്തപ്പോൾ കമാൻഡ് പുറത്തുപോകാൻ പ്രേരിപ്പിക്കുന്നു, അതിനാൽ പകുതി പ്രവർത്തിക്കുന്ന സെഷൻ ഉപേക്ഷിക്കുന്നതിന് പകരം റീസ്റ്റാർട്ട് ലൂപ്പ് നിങ്ങളോട് സത്യം പറയുന്നു. പ്രാദേശിക SSH സേവനം പിന്നീട് ആരോഗ്യകരമാണോ എന്നതിനെക്കുറിച്ച് ഇത് ഒന്നും പറയുന്നില്ല, അതിനാൽ ഇതിനെ ഒരു പ്രോസസ് മാനേജറും ഇടയ്ക്കിടെയുള്ള യഥാർത്ഥ കണക്ഷൻ പരിശോധനയും കൂടി ചേർക്കുക.
അധിക ഹോപ്പ് ഒഴിവാക്കാൻ ലൂപ്പ്ബാക്ക് കേൾക്കുന്ന വിലാസം ഒരിക്കലും വൈൽഡ്കാർഡ് ഉപയോഗിച്ച് മാറ്റരുത്. ആ ഒരു മാറ്റമാണ് മാനേജ്മെന്റ് പാതയും പൊതുവായി എത്താവുന്ന പോർട്ടും തമ്മിലുള്ള വ്യത്യാസം, അത് സാധാരണയായി ഡീബഗ്ഗിംഗ് സമയത്ത് സംഭവിച്ച് പിന്നീട് അവിടെ തുടരും. സഹപ്രവർത്തകന് ഹബ്ബിലൂടെ പോർട്ടിൽ എത്താൻ കഴിയുന്നില്ലെങ്കിൽ, ബൈൻഡ് വിശാലമാക്കുന്നതിന് പകരം ജംപ് കോൺഫിഗറേഷൻ ശരിയാക്കുക. ഈ രൂപകൽപ്പനയുടെ മുഴുവൻ സുരക്ഷാ വാദവും ലൂപ്പ്ബാക്കാണ്.
ഹബ്ബിലൂടെയുള്ള അഡ്മിനിസ്ട്രേറ്റർ പ്രവേശനം
ഹബ്ബിൽ സാധാരണ അക്കൗണ്ടുള്ള ഒരു അഡ്മിനിസ്ട്രേറ്റർക്ക് അതിലൂടെ ഫോർവേഡ് ചെയ്ത പോർട്ടിലേക്ക് ചാടാം. റിലേ അക്കൗണ്ട് ഇതിന് ഉപയോഗിക്കുന്നില്ല, അവ വേർതിരിച്ച് നിർത്തുന്നതിന്റെ അർത്ഥവും അതാണ്.
ssh -J [email protected] -o HostKeyAlias=device-7 \
-p 21022 [email protected]
നിങ്ങൾ തിരഞ്ഞെടുത്ത അലിയാസിന് കീഴിൽ ഉപകരണത്തിന്റെ ഹോസ്റ്റ് കീ പരിശോധിക്കുക, കാരണം ആ കീയാണ് ശൃംഖലയുടെ അറ്റത്തുള്ള ഉപകരണത്തെ തിരിച്ചറിയുന്നത്, ടണൽ വെറും ഗതാഗതമാണ്. അറ്റം മുതൽ അറ്റം വരെയുള്ള ലോഗിൻ ഇപ്പോഴും രണ്ടറ്റത്തെയും പ്രാമാണീകരിക്കുന്നു; പങ്കിട്ട ഹബ്ബിൽ അവസാനിക്കുന്ന ഒരു ടണൽ അതിനെ സ്വയം വിശ്വസനീയമായ പാതയാക്കുന്നില്ല.
ജീവിതചക്രത്തിന്റെ ഉടമസ്ഥത ഏൽക്കുക
ഉപകരണ കമാൻഡ് ഒരു പ്രോസസ് മാനേജറിന് കീഴിൽ കൃത്യമായി ഒരു സജീവ ഇൻസ്റ്റൻസും ബോധപൂർവ്വം തിരഞ്ഞെടുത്ത റീസ്റ്റാർട്ട് നയവുമായി പ്രവർത്തിപ്പിക്കുക. കീപ്പ്അലൈവ് ഓപ്ഷനുകൾ മരിച്ച പങ്കാളിയെ കണ്ടെത്തുന്നു; പുറത്തുപോയ ഒരു പ്രോസസിനെ അവ പുനരുജ്ജീവിപ്പിക്കുന്നില്ല.
തുടർന്ന് ഡീകമ്മീഷൻ നടപടിക്രമം എഴുതുക. ഓരോ ഉപകരണത്തിനും അതിന്റേതായ ശ്രോതാവും അതിന്റേതായ കീയും ലഭിക്കുന്നു, അതിനാൽ ഡീകമ്മീഷൻ എന്നാൽ ആ അക്കൗണ്ട് റദ്ദാക്കുകയും ആ കീ നീക്കം ചെയ്യുകയും ചെയ്യുക എന്നതാണ്, ഇട്ട മുഴുവൻ കൂട്ടവും പങ്കിടുന്ന രഹസ്യം തിരിക്കുക എന്നല്ല.
അവസാനം, ലൂപ്പ്ബാക്ക് നിങ്ങൾക്ക് എന്ത് നൽകുന്നു എന്ന് ഓർക്കുക. അത് നെറ്റ്വർക്ക് എക്സ്പോഷർ പരിമിതപ്പെടുത്തുന്നു, പങ്കിട്ട ഹബ്ബിലെ മറ്റ് പ്രാദേശിക ഉപയോക്താക്കളെക്കുറിച്ച് ഒന്നും ചെയ്യുന്നില്ല, അതിനാൽ ഹബ്ബിന്റെ സ്വന്തം പ്രവേശന നയം ഇപ്പോഴും ശരിയായിരിക്കണം. sshd_config റഫറൻസ് മുകളിൽ ഉപയോഗിച്ച ഓരോ ഓപ്ഷനും രേഖപ്പെടുത്തുന്നു, അവയിലൊന്ന് വിശാലമാക്കുന്നതിന് മുമ്പ് ഫോർവേഡിംഗ് വിഭാഗങ്ങൾ പൂർണ്ണമായി വായിക്കേണ്ടതാണ്.