W końcu udało mi się to osiągnąć ssh
tylko:
- uruchom lokalny serwer proxy SOCKS na komputerze klienckim (używając
ssh -D
)
- połącz się ze zdalnym serwerem i skonfiguruj zwrotne przekazywanie portów (
ssh -R
) do lokalnego proxy SOCKS
- skonfiguruj oprogramowanie serwera, aby korzystało z przekazanego proxy
1. Uruchom lokalne proxy proxy w tle
Połącz się z hostem lokalnym przez SSH i otwórz serwer proxy SOCKS na porcie 54321.
$ ssh -f -N -D 54321 localhost
-f
uruchamia SSH w tle.
Uwaga: jeśli zamkniesz terminal, w którym uruchomiłeś polecenie, proces proxy zostanie zabity. Pamiętaj również, aby posprzątać po sobie, zamykając okno terminala po zakończeniu lub zabijając samemu proces!
2. połącz się ze zdalnym serwerem i skonfiguruj odwrotne przekierowanie portów
Powiąż zdalny port 6666 z lokalnym portem 54321. Dzięki temu lokalny serwer proxy skarpet będzie dostępny dla zdalnej witryny na porcie 6666.
$ ssh root@target -R6666:localhost:54321
3. skonfiguruj oprogramowanie serwera, aby korzystało z przekazanego proxy
Wystarczy skonfigurować yum, apt, curl, wget lub inne narzędzie obsługujące SOCKS do korzystania z proxy 127.0.0.1:6666
.
Voilá! Miłego tunelowania!
4. opcjonalnie: skonfiguruj oprogramowanie serwera, aby korzystało z przekazywanego proxy
Przekonałem się, że instalacja proxychains
na serwerze docelowym znacznie ułatwia.
Umożliwia dowolnemu oprogramowaniu korzystanie z proxy SOCKS (nawet telnet
), poprzez zastosowanie LD_PRELOAD
sztuczki przekierowującej żądania TCP i DNS z dowolnych poleceń do proxy.
Skonfiguruj /etc/proxychains.conf
serwer proxy do przesyłania dalej:
[ProxyList]
# SSH reverse proxy
socks5 127.0.0.1 6666
Tunelowe narzędzia arbitralne (wykorzystujące TCP) z proxychains
:
$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update