SSH Ters çorap tüneli


26

ssh -D Yerel makinede trafiği uzaktan kumandaya ve sonra diğer yerlere geçen bir çorap limanı yapabilir.

ssh -L port:host:hostport, yerel makinedeki bağlantı noktasını dinle, uzaktaki makinenin bakış açısından trafiği "ana bilgisayar: ana makine" ye geçir.

ssh -R port:host:hostportkarşılığıdır ssh -Lyerel makinenin açısından: "hostport konak" Uzak makinedeki bağlantı noktasını dinlemek ve trafiği geçmek.

Ancak ssh -D, uzaktaki makinede, sonradan bölgeye, sonra başka yerlere geçecek bir çorap limanının nasıl açılacağı, yani meslektaşı nedir?


1
soru değer kaybetti çünkü işe yaramayan ve cevap vermeyen bir cevabı kabul ettiniz. Bu (
cevabın yorumunda

Yanıtlar:


12

İle -D& -Liki makine arasında her iki şekilde iletişim kurmak için bir yol var.

Yani...

  • Yerel makineden, -Ryerel makinenin sshd'sini gösteren uzaktaki makinede bir dinleme portu oluşturmak için kullanın .
  • -DUzak makinede, yukarıda oluşturduğunuz bağlantı noktasını işaret ederek kullanın .

Aşağıdakileri doldurduğumda "çalışıyorum" ...

ssh remotehost -R remoteport:localhost:localport "ssh -D 9050 localhost -p remoteport"

' remotehost', ' remoteport' & ' localport' Yukarıdakilerin değişmesi gerekiyor. 9050'de bir çorap vekili oluşacak.


Oh, SO'da sorulmuş gibi görünüyor: stackoverflow.com/questions/842021/… Sadece cevap aynı fikir. Biri çalışacak eminim ;-) EDIT - evet, o benimkinden daha haklıydı. Ben mayını tamir ettim.
Pricey

Aslında, bu dolaylı yöntemi kendi durumumda kullandım. Ama benim firendimin durumunda, kök ayrıcalığına sahip değildi, bu yüzden sshd servisi olamaz, sadece OpenSSH müşterisi var. Bu yüzden doğrudan bir yöntem olduğunu bulmak istiyorum, ancak OpenSSH görünmüyor ... Aynı teşekkür ederim
Berry

1
@barlop ve bu işe yaramaz çünkü ssh çalıştırılabilir 10.0.0.10 'dan çalıştırılacağını söyler, çünkü -R 10.0.0.10:9050' ye iletir diyor ancak SOCKS sunucusu
10.0.0.5 '

1
@PriceChild komutunuzu gerçekten test ettiniz mi?
barlop

5
-1 Test etmeye zahmet etmediniz ve emriniz tamamen yanlış. Diğer SO cevabı gibi yapmaya çalıştın ama başaramadın. A'dan B'ye SSHing, bağlandığınız ssh -D A'yı dinliyor. Birinizde B dinliyor. Sizin yanlış. SOCKS proxy'sini dinleyen tarafta dinliyorsunuz.
barlop

14

Bu snippet ile şeffaf bir şekilde ~ / .ssh / config dosyasında erişilebilir:

Host sockstunnel
    ProxyCommand ssh -D 3128 localhost nc -q 1 localhost 22

Host target
    RemoteForward 3128 localhost:3128
    ProxyCommand ssh -W target:22 sockstunnel

ayrıntılar

DynamicForward'ın tersini istiyoruz. Bu, iki ssh komutu kullanılarak gerçekleştirilir:

  • ssh -D 3128 localhost
  • ssh -R 3128:localhost:3128 target

Bu şekilde hedefin SSH istemcisine bir SOCKS tüneli var.

Yaptığım şey, ssh klasik zincirleme yöntemini, ara ana bilgisayarlardan uzaktaki bir hedefe ulaşmak için kullanmaktır, böylece SOCKS tünel oluşturma, hedefe giriş yaparken şeffaf bir şekilde ele alınır. İlk ProxyCommand + nc numarası zorunludur, çünkü -W ClearAllForwardings anlamına gelir.


1
bu altın madalyaya değer.
Dakatine,

Emirlerinin ne olduğuna dair daha ayrıntılı bir açıklama yapabilir misin?
Alonso s

3

OpenSSH ile ters çorap tüneli sağlama imkanı yoktur, bu yüzden "uzak" makinede çoraplara proxy sağlayan ssh komutunu çalıştırmalısınız.

Uzak makine yerel makineye bağlanamıyorsa, önce 22 numaralı bağlantı noktasını 2222'ye yönlendiren yerelden uzaktaki bir ssh bağlantısı oluşturun. Daha sonra uzaktaki makine 2222 numaralı bağlantı noktasındaki yerel makineye ssh kurabilir .


2
local$ ssh -R 1080 remote
remote$ curl --socks5 localhost https://example.com

OpenSSH 7.6’dan beri

ssh (1): ters dinamik iletme için destek ekler. Bu modda, ssh bir SOCKS4 / 5 proxy'si olarak işlev görür ve uzak SOCKS istemcisi tarafından istenen hedeflere ileri bağlantılar. Bu mod, -R ve RemoteForward seçenekleri için genişletilmiş sözdizimi kullanılarak istenir ve yalnızca istemciye uygulandığından, sunucunun desteklenmesi için güncellenmesini gerektirmez.

https://www.openssh.com/txt/release-7.6


Bunun için bir referans verebilir misiniz?
Scott

Bu arada, openssh-client 8.0'da bir bağlantı adresi ( ssh -R 127.0.0.3:1080 remote) ile bir bağlantı adresi seçemeyeceğiniz bir hata var, şu anda bir ters SOCKS proxy'sini yalnızca bir bağlantı noktasına bağlayabilirsiniz .
Adam Katz
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.