Czy mogę utworzyć SSH do tunelowania HTTP przez serwer tak, jakby to był serwer proxy?

33

Powiedz, że mam serveri client. Muszę utworzyć połączenie od clientdo websitepoprzez, serverjakby to był serwer proxy.

Czy można to zrobić za pomocą tunelu SSH, czy też muszę zainstalować jakąś usługę proxy server?

Jakub Arnold
źródło

Odpowiedzi:

43

Możesz to zrobić za pomocą ssh

ssh -L 80:remotehost:80 user@myserver

Będziesz wtedy mieć tunel z lokalnego portu 80 do zdalnego portu 80. To nie musi być taki sam jak mój serwer. Aby zachować przejrzystość, należy dodać wpis do pliku hosts. Jeśli tego nie zrobisz, vhosty nie będą działać. Jeśli potrzebujesz połączenia SOCKS-proxy, możesz również użyć

ssh -D 5000 user@myserver

Spowoduje to utworzenie serwera proxy SOCKS na porcie lokalnym hosta 5000, który kieruje wszystkie żądania przez mój serwer.

Wienczny
źródło
2
Jeśli chcesz, aby ten tunel był dostępny dla klientów spoza twojego pudełka, dodaj opcję -g.
mr-euro
1
Polecenie w formie pisemnej nie działało dla mnie. Musiałem zastąpić zdalny host
pętlą zwrotną w
Przydałby się bardziej, gdyby port zdalny był inny niż ssh -L 81:remotehost:80 user@myserverport lokalny, który mówi 81, jakby to był zdalny port 80.
Rafareino
1
Jeśli chcesz dodać proxy SOCKS poprzez ~ / .ssh / config, użyj:Host myserver User user DynamicForward 5000
bonh
15

Tak to mozliwe.

Uruchom ssh -D port user@hosti skonfiguruj swojego klienta, aby używał twojego urządzenia jako serwera proxy SOCKS.

Jeśli potrzebujesz serwera proxy HTTP, możesz użyć Proxychains i przekierować go przez poprzednie SOCKS.

mr-euro
źródło
5

Kit też to robi całkiem dobrze.

Pod SSH, Goto Tunnels. Na dole umieść 8080 w porcie, a dla miejsca docelowego pozostaw go na czarno i wybierz przycisk opcji „Dynamiczny”. To wszystko, co musisz zrobić, teraz połączyć się z serwerem za pomocą Putty.

Po podłączeniu masz serwer proxy działający na lokalnym hoście na porcie 8080, który będzie proxy wszystkich żądań przez serwer.

Teraz użyj przeglądarki internetowej i skonfiguruj serwer proxy, ustawiając host = localhost i port = 8080 i upewnij się, że jest to wybrany serwer proxy SOCKS. Robię to cały czas, więc jeśli używasz przeglądarki Firefox, zainstaluj wtyczkę FoxyProxy, ponieważ powoduje ona włączenie / wyłączenie proxy za pomocą jednego kliknięcia.

Uwaga: pamiętaj, że domyślnie twoje żądania DNS nie są proxy. Tak więc witryna odwiedzana przez proxy będzie nadal logowana (jeśli logują te rzeczy). Możesz ustawić firefox również na żądania DNS proxy, po prostu domyślnie tego nie robi.

J Sidhu
źródło
5

sshuttle działa jak VPN, ale przez SSH.

Przezroczysty serwer proxy, który działa jak VPN biednego człowieka. Przekazuje przez ssh. Nie wymaga administratora. Działa z systemami Linux i MacOS. Obsługuje tunelowanie DNS.

https://github.com/sshuttle/sshuttle

Kasper Grubbe
źródło
2

Aby zezwolić na uruchamianie serwera proxy i umożliwić innym klientom łączenie się z tobą, potrzebujesz opcji -g. Na przykład uruchomiłbyś to na serwerze o nazwie foo:

ssh -g -ND 9191 root@remotehost

Następnie możesz ustawić proxy w przeglądarce klienta, aby korzystało z serwera foo i portu 9191 dla proxy SOCKS. Klienci będą wysyłać swoje żądania zbyt foo, którzy z kolei przekażą żądanie za pośrednictwem ssh do zdalnego hosta. Tak więc w Internecie będzie wyglądać, jakby korzystali ze zdalnego hosta.

Jeśli chcesz przekazywać również żądania DNS za pomocą firefox, edytuj about: config w firefox i ustaw network.proxy.socks_remote_dns na true.

Kyle Brandt
źródło