SSHથી સ્થાનિક SOCKS proxy બનાવો
127.0.0.1 પર OpenSSH dynamic forwarding વાપરો, સત્ર દરમિયાન process ચાલુ રાખો અને કાર્યરત listenerને લક્ષ્ય સુધીની પહોંચથી અલગ સમજો.
સર્વર પર મંજૂર SSH ઍક્સેસ હોય તો OpenSSH તમારા કમ્પ્યુટર પર SOCKS listener બનાવી શકે છે. SSH જોડાણ આગળ મોકલાતો ટ્રાફિક લઈ જાય છે અને remote server લક્ષ્ય સાથે જોડાય છે.
માત્ર loopback listener
ssh -N -T -o ControlPath=none -o ForkAfterAuthentication=no -o ExitOnForwardFailure=yes -D 127.0.0.1:1080 [email protected]
ખાતું અને hostname બદલો. SSH serverએ forwarding મંજૂર કરવું જોઈએ; સંચાલક ખાતામાં loginથી સ્વતંત્ર રીતે forwarding અને લક્ષ્ય મર્યાદિત કરી શકે છે.
-D dynamic forwarding બનાવે છે અને સ્પષ્ટ loopback સરનામું listenerને આ મશીન સુધી મર્યાદિત કરે છે. -N remote command છોડે છે; -T pseudo-terminal છોડે છે. ControlPath=none હાલના sharing masterથી બચે છે અને ForkAfterAuthentication=no આ callને foregroundમાં રાખે છે.
Proxy વાપરતાં process ચાલુ રાખો. પોર્ટ1080 વ્યસ્ત હોય તો બીજો ખાલી high port પસંદ કરી client સુધારો. ExitOnForwardFailure=yes listener ન બનાવી શકે તો SSHને બંધ કરાવે છે.
SOCKS endpoint વાપરવો
curl --proxy socks5h://127.0.0.1:1080 --noproxy '' --connect-timeout 5 --max-time 15 https://example.com/
આ વિનંતી SOCKS5 મારફતે લક્ષ્યના નામની પ્રક્રિયા સોંપે છે. બીજી એપને પોતાની SOCKS ગોઠવણી જોઈએ; HTTP proxy ક્ષેત્ર આ listener સાથે SOCKS બોલી શકતું નથી.
પોર્ટ કયા processનો છે તે તપાસવા:
ss -ltnp 'sport = :1080'
ઇચ્છિત SSH process પાસે loopback listener હોવો જોઈએ. તેના મારફતે વિનંતી remote server પણ લક્ષ્ય સુધી પહોંચે છે કે નહીં તપાસે છે. જોવાયેલું બહાર નીકળવાનું સરનામું તપાસવું હોય ત્યારે પોતાના નિયંત્રણનું લક્ષ્ય વાપરો.
સત્રનું આયુષ્ય
Ctrl-C SSH process, listener અને આગળ મોકલાયેલા જોડાણ બંધ કરે છે. SSH જોડાણ તૂટે તો પણ proxy ઉપલબ્ધ રહેતો નથી.
ExitOnForwardFailure સ્થાપન તપાસે છે. પછીના દરેક લક્ષ્ય જોડાણની નિષ્ફળતાએ SSH બંધ કરતું નથી, તેથી સત્ર, સ્થાનિક પોર્ટ અને લક્ષ્ય વિનંતી અલગ તપાસો.