SSH tunneling और port forwarding के लिए visual guide (2023)
(ittavern.com)SSH tunneling और port forwarding के लिए visual guide
- सारांश: यह ब्लॉग पोस्ट SSH tunneling और port forwarding को समझने में मदद करने के लिए लिखी गई है। इसमें use case, setup, SSH jump host, local/remote/dynamic port forwarding, और limitations शामिल हैं।
उपयोग के मामले
-
सुरक्षा:
- FTP जैसे असुरक्षित connections को encrypt करना
- SSH tunnel के ज़रिए web admin panel तक पहुँच (public key authentication)
- exposed ports की संख्या कम करना (सिर्फ port 22 expose करना)
-
समस्या समाधान:
- firewall/content filter को bypass करना
- दूसरा route चुनना
-
कनेक्टिविटी:
- NAT के पीछे मौजूद server तक पहुँचना
- jump host का उपयोग करके internet के ज़रिए internal server तक पहुँचना
- local port को internet पर expose करना
Port forwarding
- Setup/तैयारी:
- local और remote users को ports खोलने की अनुमति चाहिए
- port 0-1024 के लिए root permission चाहिए
- client और network firewall को सही तरीके से configure करें
- SSH server पर port forwarding enabled होना चाहिए:
AllowTcpForwarding yes - दूसरे interface पर port forward करने के लिए
GatewayPorts yesenabled होना चाहिए
SSH jump host / SSH tunnel
-
jump host के ज़रिए connection:
ssh -J user@REMOTE-MACHINE:22 -p 22 user@10.99.99.1 -
कई jump hosts का उपयोग:
ssh -J user@REMOTE-MACHINE:22,user@ANOTHER-REMOTE-MACHINE:22 -p 22 user@10.99.99.1
Local port forwarding
-
उदाहरण 1:
ssh -L 10.10.10.1:8001:localhost:8000 user@REMOTE-MACHINE -
उदाहरण 2:
ssh -L 8001:10.99.99.1:8000 user@REMOTE-MACHINE
Remote port forwarding
-
उदाहरण 1+2:
ssh -R 8000:localhost:8001 user@REMOTE-MACHINE ssh -R 8000:10.10.10.2:8001 user@REMOTE-MACHINE -
उदाहरण 3:
ssh -R 10.99.99.2:8000:10.10.10.2:8001 user@REMOTE-MACHINE
Dynamic port forwarding
- SOCKS protocol का उपयोग:
ssh -D 10.10.10.1:5555 user@REMOTE-MACHINE
SSH TUN/TAP tunneling
- bidirectional TCP tunnel बनाना:
ssh -w local_tun[:remote_tun]
Background में SSH चलाना
-
Background execution:
ssh -fN -L 8001:127.0.0.1:8000 user@REMOTE-MACHINE -
Background SSH रोकना:
ps -ef | grep ssh kill <PID>
SSH connection को बनाए रखना
- timeout handling:
ClientAliveInterval 15ClientAliveCountMax 3
सीमाएँ
-
UDP:
- SSH reliable delivery की आवश्यकता रखता है, इसलिए UDP supported नहीं है
-
TCP-over-TCP:
- अतिरिक्त overhead के कारण throughput घटता है और latency बढ़ती है
-
VPN का विकल्प नहीं:
- SSH tunneling VPN की जगह ले सकती है, लेकिन performance के लिहाज़ से VPN अधिक उपयुक्त है
-
संभावित सुरक्षा जोखिम:
- जिन features की ज़रूरत न हो, उन्हें disable करना बेहतर है
GN⁺ की संक्षिप्त整理
- यह लेख SSH tunneling और port forwarding के विभिन्न use case और setup methods समझाता है
- SSH tunneling secure connection प्रदान करने और firewall bypass करने में उपयोगी है
- लेकिन यह VPN का पूर्ण विकल्प नहीं है, और इसमें performance degradation जैसी सीमाएँ हैं
- संबंधित अन्य projects में OpenVPN जैसे VPN solutions शामिल हैं
1 टिप्पणियां
Hacker News राय
2024 में SSH कमांड सीधे लिखने के बजाय,
~/.ssh/configफ़ाइल का उपयोग करके LocalForward, RemoteForward, ProxyJump सेट करना बेहतर हैजटिल कंपनी वातावरण में SSH tunneling अनिवार्य है
ssh -D 8888 someserverकमांड का उपयोग करके browser का SOCKS proxy localhost:8888 पर सेट करने से browser traffic उस server के माध्यम से route होता हैfirewall के पीछे और fixed IP के बिना Linux server या IoT device में SSH access चाहिए तो tunneling service का उपयोग किया जा सकता है
सबसे जटिल SSH tunneling hack का अनुभव data center के बीच कनेक्शन में हुआ
networking visualization और अधिक होनी चाहिए
TCP-over-TCP में overhead बढ़ता है और latency बढ़ने से performance घट सकती है
SSH tunnel शानदार tool है, लेकिन आजकल TLS और reverse proxy features built-in वाले tools का अधिक उपयोग होता है
sshuttle tunneling के लिए बेहतर tool है
sshuttle -r user@host 10.0.0.0/8कमांड का उपयोग करके इसे VPN की तरह इस्तेमाल किया जा सकता है15 साल पहले विश्वविद्यालय नेटवर्क के firewall को bypass करने के लिए SSH tunnel का उपयोग शुरू किया था
यह जानने की जिज्ञासा है कि क्या SSH में खुद redirect feature है