ssh üzerinden http proxy, çorap değil


30

Soru basit ama cevap değil:

ssh -D 8080 user@host

veya

ssh -gCNf -D 8080 user@host

veya

wathever with -D #

Http_proxy değişkeni ile birlikte kullanabileceğim bir tür proxy'ye, SOCKS'i desteklemeyen bir gömülü cihaza ihtiyacım var.

Ne yapmalıyım?


Olmamalı mı ssh -D user@host:8080?
ngen

Bir süre önce ssh ile yaptım .. ssh ile vnc. ama ssh ile kalamar (http proxy) kullandığını düşünebilirim. şu anda nasıl yaptığımı hatırlayamıyorum. -D değil çünkü (bildiğiniz gibi -ve benden daha iyi) -D hatırladığımda ÇORAP.
barlop

@ngen: No. -Dbağlantı kuracağınız bağlantı noktasını değil, tüneli açacak bir bağlantı noktası belirtir. (Hatta bağlantı noktası olarak belirtilir -p portdeğil, :portuyumluluk nedeniyle,.)
grawity

Yanıtlar:


33

Yöntem 1: Yukarı akışta SOCKS kullanımını destekleyen bir HTTP proxy kullanın, örneğin Polipo veya Privoxy.

Önce -Dher zamanki gibi SSH üzerinden bir tünel kurun, ardından HTTP proxy'sini SSH tünelini kullanacak şekilde yapılandırın - örnek Polipo yapılandırması:

proxyAddress = "::1"
proxyPort = 8118
socksParentProxy = "localhost:8080"
socksProxyType = socks5

Son olarak, uygulamayı kullanarak Polipo'ya gelin http_proxy=localhost:8118.

Yöntem 2: Programınızı , tüm bağlantıları saydam bir şekilde proxy'ye alan torsockssarıcı (veya daha eski tsocks) içinde çalıştırın . Tor ile kullanılması amaçlanmıştır, ancak dahil olmak üzere herhangi bir SOCKS sunucusu ile çalışır ssh -D.

Yöntem 3: Sunucunuzda bir HTTP proxy ayarlayın , sonra ssh -Lerişmek için kullanın .


Privoxy en iyi çözümdür. Çok teşekkürler.
Seyed Morteza

18

Her -Dbir SOCKS sunucusunda sonuçlanır. Müşteriniz SOCKS ile başa çıkamıyorsa unutun -D.

Uzak ana bilgisayarda bir HTTP-Proxy çalıştırmanız ve şunu yapmanız gerekir -L:

ssh -f -N -n -L8080:127.0.0.1:8080 host

2
Bir proxy'nin çalışması için "tinyproxy" yi süper basit buldum ve önceden varsayılan olarak makul şekilde yapılandırıldım. Ubuntu / etc uzak ana bilgisayarında, sadece "sudo apt-get tinyproxy'yi kurun" ve sonra yukarıdaki gibi 8888 numaralı bağlantı noktasına yönlendirin: "ssh -L8888: 127.0.0.1: 8888"
Jimbly'de

7

SSH üzerinden HTTP proxy kullanmak isteyen de aynı sorunu yaşıyorum. Birçok uygulama yalnızca HTTP proxy'yi desteklediğinden ve HTTP proxy'nin komut satırı ortamında kullanılması kolaydır.

Birkaç sayfa aramasına rağmen, bunu yapmanın doğrudan bir yolunu bulamıyorum (Polipo, Privoxy veya tsocks ile zincirlenebilir).

Bir günlük çalışmadan sonra, SSH üzerinden HTTP proxy'nin basit bir Golang sürümünü bitirdim. Onunla oynamaktan çekinmeyin: mallory .

Şu anda yalnızca RSA anahtarını ($ HOME / .ssh / id_rsa konumunda) ve parola yetkilendirmesini desteklemektedir.

hostSSH sunucu adresidir portolan 22yöneticiniz tarafından değiştirildi değilse. Sunucu tarafı sshdsıfır konfigürasyona sahip eski dostumuzdur .

mallory -engine=ssh -remote=ssh://host:port

veya kullanıcı adıyla user

mallory -engine=ssh -remote=ssh://user@host:port

veya kullanıcı adı userve şifre ile1234

mallory -engine=ssh -remote=ssh://user:1234@host:port

Bağlandıktan sonra, bir HTTP proxy'si yerel ana bilgisayarda hizmet verecek: 1315.


4
ssh -L 8080:localhost:12345 user@host

Bu işlem yerel makinede 8080 numaralı bağlantı noktasını açacak ve tüm verileri uzaktaki makineden görüldüğü gibi yerel ana bilgisayardaki 12345 numaralı bağlantı noktasına iletecektir.


2
Unutmayın, ayrıca uzak ana bilgisayarda çalışan bir HTTP proxy'nizin olması gerekir. Port yönlendirme kendi başına yardımcı olmaz.
Jonathan,

2

Uzak ana bilgisayarda Privoxy'yi çalıştırın, sonra aşağıdaki -Lseçeneği kullanarak SSH üzerinden Privoxy'ye bağlanın :

-L [bind_adresi:] port: host: hostport
         Yerel (istemci) ana bilgisayarda verilen bağlantı noktasının
         uzaktaki belirli bir ana bilgisayara ve bağlantı noktasına iletilir. Bu
         yerel taraftaki limanı dinlemek için bir soket tahsis ederek çalışır,
         isteğe bağlı olarak belirtilen bind_adresine bağlı. Ne zaman bir
         bağlantı bu bağlantı noktasına yapılır, bağlantı iletilir
         güvenli kanal ve ana bağlantı noktasıyla bağlantı kurulur.
         uzak makineden hostport.

( manpage kaynağı )


1

Ayrıca tirbuşon (GPL) kullanabilirsiniz.

Aşağıdakini ekleyin .ssh/config

Host=RemoteServerIP or Name
User=UserLoginName
Port=PortNumber
ProxCommand=/usr/bin/corkscrew Proxy.Adress PortNumber %h %p

tirbuşon talep edilen tersini değil, bir http vekili üzerinden ssh çalıştırır.
eMBee
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.