Jak mogę korzystać z SSH z proxy SOCKS 5?

35

Mam proxy SOCKS5 skonfigurowane przez PuTTY z portem 7777 skonfigurowanym jako port dynamiczny. Mogę użyć firefox / filezilla / etc, konfigurując je do używania proxy SOCKS z localhostportem 7777. Ale nie mogę wymyślić, jak ssh (przez Cygwin) do zdalnego serwera za pomocą portu dynamicznego. czy to możliwe?

Próbowałem użyć ProxyCommandnastępującej metody.

  1. Utwórz ~/.ssh/configza pomocą następującego wiersza:

    ProxyCommand /usr/bin/nc -X connect -x 127.0.0.1:7777 %h %p
    
  2. Uruchom ssh -p22 user @ remotehost

Otrzymałem wiadomość ssh_exchange_identification: Connection closed by remote host

Zardzewiały lemur
źródło
1
Aby zrobić program, który nie obsługuje SOCKS, przejdź przez SOCKS, możesz użyć tak zwanego proxy; patrz en.wikipedia.org/wiki/Comparison_of_proxifiers . W szczególności polecam mój open source proxy tun2socks proxy ( code.google.com/p/badvpn/wiki/tun2socks ).
Ambroz Bizjak
Dzięki za komentarz Ambroz. Potrzebuję go do pracy w cygwin i ze strony wikipedii na serwerach proxy widzę, że wszystkie wspomniane przez niego albo nie są zaimplementowane w cygwin, albo nie mają zastosowania. Czy istnieje sposób na uzyskanie proxy do pracy w cygwin?
nie potrzebujesz go specjalnie do wspierania Cygwin. Programy Cygwin to w końcu tylko programy Windows, ale z interfejsem POSIX zaimplementowanym jako biblioteka. Jeśli proxy działa w systemie Windows, powinno być w stanie dobrze proxy do programów Cygwin.
Ambroz Bizjak

Odpowiedzi:

31

Używasz „połącz” dla HTTPS jako wersji proxy, to pochodzi z man nc:

-X proxy_version Żąda, aby nc używał określonego protokołu podczas rozmowy z serwerem proxy. Obsługiwane protokoły to „4” (SOCKS v.4), „5” (SOCKS v.5) i „connect” (proxy HTTPS). Jeśli protokół nie jest określony, używana jest SOCKS wersja 5.

Aby skorzystać z SOCKS 5, powinieneś użyć następujących instrukcji:

ProxyCommand /usr/bin/nc -X 5 -x 127.0.0.1:7777 %h %p

Lub po prostu:

ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 %h %p

Mam nadzieję, że to pomoże.


źródło
Dzięki Saman, to zadziałało! Ponadto, dzięki za wyjaśnienie, pomaga.
ProxyCommandMusi być pierwsza linia swojej ~/.ssh/config', or else nested inside a specify sekcji Host`. Nie bardzo wiem dlaczego. Nie działa, jeśli jest to ostatni wiersz w~/.ssh/config
Aaron McDaid
@AaronMcDaid: Od man ssh_config: „Dla każdego parametru zostanie wykorzystana pierwsza uzyskana wartość.” Dlatego ... ustawienia globalne muszą znajdować się przed dowolnymi Hostsekcjami. Ostatni wiersz ~/.ssh/configjest częścią ostatniej Hostsekcji.
mpb
Warto wspomnieć, że netcat jest dostępny /bin/ncna Debianie i Ubuntu.
Per Lundberg,
11
ssh -o ProxyCommand='nc --proxy-type socks4 --proxy 127.0.0.1:9050 %h %p' user@host

fc19 x86_64, Ncat: wersja 6.25

użytkownik264910
źródło
po prostu ciekawy - dlaczego proxy-type socks4?
podejrzany
2
Czy możesz dodać trochę więcej wyjaśnień, aby powiedzieć, dlaczego jest to rozwiązanie.
ChrisF,
1
@ChrisF to to samo, co zaakceptowane rozwiązanie, ale jest jednowarstwowe! Nie trzeba modyfikować żadnego pliku konfiguracyjnego.
j123b567,
1
Jest to program nmap ncat (dostępny apt install nmapw systemach APT, takich jak Ubuntu i Debian), który różni się od netcat (czy to netcat-openbsd, czy Hobbit - tradycyjny Netcat).
Adam Katz,
1
@suspectus związane @Adam Katz uwag, proxy-typeto socks4dlatego, że nmap ncatProgram nie wspiera sock5 aż do niedawna. Rzeczywiście, jest to problem nawet teraz (listopad 2017 r.), Ponieważ RHEL 7 / Centos 7 przełączył się na pakiet nmap, ale użył starszej wersji, która nie obsługuje skarpet5
Randall
3

tsocks ( http://tsocks.sourceforge.net/ ) to ładne opakowanie, które używa LD_PRELOAD, aby każdy program używał proxy SOCKS w sposób transparentny:

tsocks ssh example.com

Po prostu działa, pamiętaj o skonfigurowaniu serwera proxy SOCKS IP w /etc/tsocks.conf

neutrinus
źródło
plik konfiguracyjny jest zbyt skomplikowany
Jiang YD
1

Następujące polecenie zrobi, aby po prostu użyć nc:

ssh examplehost.com -o "ProxyCommand=nc --proxy localhost:7000 %h %p"

Domyślnie jest to serwer proxy HTTP, serwer proxy HTTP działa na porcie 7000.

Chinglin Wen
źródło