Skapa en lokal SOCKS-proxy med SSH
Använd dynamisk OpenSSH-vidarebefordran på 127.0.0.1, håll processen igång under sessionen och skilj fungerande lyssnare från nåbar destination.
Med tillåten SSH-åtkomst till en server kan OpenSSH skapa en SOCKS-lyssnare på din dator. SSH-anslutningen bär den vidarebefordrade trafiken och fjärrservern ansluter till destinationen.
En lyssnare enbart på loopback
ssh -N -T -o ControlPath=none -o ForkAfterAuthentication=no -o ExitOnForwardFailure=yes -D 127.0.0.1:1080 [email protected]
Byt konto och värdnamn. SSH-servern måste tillåta vidarebefordran; administratören kan begränsa vidarebefordran och destinationer oberoende av kontoinloggningen.
-D skapar dynamisk vidarebefordran och den uttryckliga loopbackadressen begränsar lyssnaren till denna dator. -N utelämnar ett fjärrkommando; -T utelämnar en pseudoterminal. ControlPath=none undviker en befintlig delningsmaster medan ForkAfterAuthentication=no håller denna körning i förgrunden.
Håll processen igång när du använder proxyn. Om port 1080 är upptagen, välj en annan ledig hög port och uppdatera klienten. ExitOnForwardFailure=yes får SSH att avsluta om lyssnaren inte kan skapas.
Använd SOCKS-slutpunkten
curl --proxy socks5h://127.0.0.1:1080 --noproxy '' --connect-timeout 5 --max-time 15 https://example.com/
Denna begäran delegerar hanteringen av destinationsnamnet genom SOCKS5. Andra program behöver egna SOCKS-inställningar; ett HTTP-proxyfält kan inte tala SOCKS med denna lyssnare.
Så kontrollerar du vilken process som äger porten:
ss -ltnp 'sport = :1080'
Den avsedda SSH-processen bör äga en loopbacklyssnare. En begäran genom den testar om fjärrservern också når målet. Använd en kontrollerad destination när du behöver granska den observerade utgången.
Sessionens livslängd
Ctrl-C stänger SSH-processen, lyssnaren och de vidarebefordrade anslutningarna. En bruten SSH-anslutning gör också proxyn otillgänglig.
ExitOnForwardFailure kontrollerar uppsättningen. Det avslutar inte SSH vid varje senare misslyckad destinationsanslutning, så diagnostisera session, lokal port och destinationsbegäran separat.