HTTP sunucusunu proxy gibi sunucu üzerinden tünellemek için SSH oluşturabilir miyim?


33

Diyelim ki bir serverve client. Ben gelen bağlantı oluşturmak için gereken clientbir etmek websiteyoluyla servero vekil olduğu gibi.

Bunu bir SSH tüneli kullanarak yapmak mümkün mü, yoksa bir proxy servisi kurmak zorunda mıyım server?

Yanıtlar:


43

Bunu ssh kullanarak yapabilirsiniz

ssh -L 80:remotehost:80 user@myserver

Daha sonra yerel portunuz 80'den uzak host portu 80'e bir tüneliniz olacaktır. Bu, myserver ile aynı olmak zorunda değildir. Bunu saydam yapmak için hosts dosyasına bir giriş eklemelisin. Bunu yapmazsanız, vhosts çalışmayacak. Bir SOCKS-proxy bağlantısı istiyorsanız,

ssh -D 5000 user@myserver

Bu, tüm istekleri myserver üzerinden yönlendiren localhost port 5000'de bir SOCKS proxy oluşturacaktır.


2
Bu tünele, kutunuzun dışındaki istemcilerden ulaşılabilmesi için -g seçeneğini ekleyin.
mr-euro

1
Yazılan komut benim için işe yaramadı. Böyle loopback ile uzak ana değiştirmek zorunda kaldı: ssh -L 80: 127.0.0.1: sunucum @ 80 kullanıcı
eficker

Uzaktaki port yerel uzaktaki bir ssh -L 81:remotehost:80 user@myserveryerel porttan farklıysa 81 uzaktaki sanki 80 konuşursa daha kullanışlı olurdu .
Rafareino

1
SOCKS proxy'sini ~ / .ssh / config üzerinden eklemek istiyorsanız, şunları kullanın:Host myserver User user DynamicForward 5000
bonh

15

Evet mümkün.

ssh -D port user@hostKutunuzu SOCKS proxy'si olarak kullanmak için müşterinizi çalıştırın ve ayarlayın.

Özellikle bir HTTP proxy'sine ihtiyacınız varsa, Proxychains'i kullanabilir ve önceki SOCKS aracılığıyla yönlendirebilirsiniz.


5

Macun da bunu oldukça iyi yapıyor.

SSH altında, Tünellere git. En altına, 8080'i bağlantı noktasına yerleştirin ve hedef için siyah bırakın ve "Dinamik" radyo düğmesini seçin. Yapmanız gereken tek şey bu, şimdi Putty kullanarak sunucuya bağlanın.

Bağlantı kurulduktan sonra, yerel sunucuda çalışan 8080 numaralı bağlantı noktasında sunucunuz aracılığıyla tüm istekleri proxy edecek bir proxy sunucunuz olur.

Şimdi bir web tarayıcısı kullanın ve host = localhost ve port = 8080'i ayarlayarak proxy'yi ayarlayın ve bunun seçtiğiniz bir SOCKS proxy'si olduğundan emin olun. Bunu her zaman yapıyorum, bu yüzden Firefox kullanıyorsanız, FoxyProxy eklentisini yüklediğinizden emin olun, çünkü proxy'yi tek bir tıklamayla açma / kapama işlemi yapar.

Dikkat: Varsayılan olarak, DNS isteklerinin proxy'ye alınmadığını unutmayın. Dolayısıyla, proxy üzerinden ziyaret ettiğiniz web sitesi hala günlüğe kaydedilir (bu şeyleri kaydederse). Firefox'u proxy DNS isteklerine de ayarlayabilirsiniz, sadece varsayılan olarak yapmaz.


5

sshuttle, VPN gibi fakat SSH üzerinden çalışıyor.

Fakir bir adamın VPN'i olarak çalışan şeffaf proxy sunucusu. Ssh üzerinden ileri. Yönetici gerektirmez. Linux ve MacOS ile çalışır. DNS tünellemeyi destekler.

https://github.com/sshuttle/sshuttle


2

Proxy'nin bir bilgisayarı çalıştırmasına izin vermek ve diğer istemcilerin size bağlanmasına izin vermek için -g seçeneğine ihtiyacınız olacaktır. Örneğin, bunu foo adındaki sunucuda çalıştırırsınız:

ssh -g -ND 9191 root@remotehost

Daha sonra, bir foxy sunucusunu ve bir SOCKS proxy'si için 9191 numaralı bağlantı noktasını kullanmak için proxy'yi bir istemcinin tarayıcısında ayarlayabilirsiniz. Müşteriler isteklerini de gönderecekler, bu da talebi ssh aracılığıyla remotehost'a iletecek. Yani internette, onlar remotehost kullanıyor gibi görünecek.

DNS isteklerini firefox ile de iletmek istiyorsanız, firefox'ta about: config komutunu düzenleyin ve network.proxy.socks_remote_dns öğesini true olarak ayarlayın.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.