Port přeposlaný přes SSH není vždy SOCKS proxy
Rozlište pevné lokální přeposílání SSH od dynamického SOCKS listeneru, než začnete konfigurovat aplikaci.
Vytvoříte SSH tunel, zadáte 127.0.0.1 a jeho port do nastavení proxy v prohlížeči a nic se nenačte. Listener může fungovat naprosto správně. Možná jen čeká na špatný druh provozu.
| Přeposílání | Co lokální aplikace odesílá | Volba cíle |
|---|---|---|
-L | Běžný protokol cílové služby | Pevně dáno v příkazu SSH |
-D | Vyjednávání SOCKS, poté provoz aplikace | Vyžádáno klientem SOCKS |
Pro jediný webový server je toto pevné přeposílání:
ssh -N -L 127.0.0.1:9080:web.example.com:80 [email protected]
Navštivte http://127.0.0.1:9080/ jako webovou stránku. Neoznačujte port 9080 jako SOCKS: přeposílá bajty jedinému webovému serveru uvedenému v příkazu. Otevření stránky pod jiným názvem hostitele může také ovlivnit její virtuální hosting, přesměrování nebo cookies.
Pro SOCKS listener se tvar mění:
ssh -N -D 127.0.0.1:1080 [email protected]
Nastavte aplikaci, aby používala SOCKS na 127.0.0.1:1080. Zadání této adresy přímo do adresního řádku prohlížeče odešle webový požadavek SOCKS listeneru, což je další nesoulad protokolů.
Manuál OpenSSH dokumentuje obě formy. Existuje užitečná výjimka: přeposlání existující HTTP proxy pomocí -L vytvoří lokální port, který mluví protokolem HTTP proxy, protože jeho pevný cíl je sám HTTP proxy. Služba na vzdáleném konci určuje, co patří do pevného přeposílání. Přeposlání existující proxy přes SSH zachovává protokol a účet této proxy.