Ara ana bilgisayardan güvenli bir şekilde tünel bağlantı noktası


23

Burada VNC için bir limanı evime geri götürmek istiyorum. Gerçek iş makineme atlamak için tek bir ana bilgisayarın üstünden atlamalıyım.

  • sittinghere benim yerel ev makinem olacak
  • hopper Orta sekmeyle yapacağım
  • overthere uzak iş makinesi olacak

Bunu iş makineme SSH'ye yapabilirim:

ssh -t hopper "ssh -t overthere"

Uzaktaki 5900 numaralı overtherebağlantı noktasını yerel 5900 numaralı bağlantı noktasına yönlendirmek için bağlantı noktası yönlendirmeyi kullanmak istiyorum sittinghere. Ancak, hopperbu makinedeki herhangi biri VNC bağlantımı ekleyebildiğinden, açık bir bağlantı noktasına bağlanmadan yapmayı tercih ederim.

Kimsenin erişemeyeceği o limanı yerel makineme güvenli bir şekilde iletmemin bir yolu var mı hopper?


Hangi VNC istemcisini kullanıyorsunuz?
slm

Yanıtlar:


18

SSH'nin portları yönlendirmek için yerel yeteneklerini kullanmak. Gönderen sittinghereyürütün:

 ssh -v -N -L 5900:overthere:5900 user@hopper

VNC istemcinizi hedefleyin localhost:5900ve bu overthere:5900bağlantı kurulan SSH bağlantısıyla trafik yönlendirilir.hopper


1
AFAIK, eğer 5900 sadece tünelde olduğu gibi yerel (127.0.0.1) arayüze bağlıysa hopperve daha sonra hoppertüm trafiği iletirse , bu çözüm size yardımcı olmaz overthere:5900. Eğer overthere:5900dinliyorsa 0.0.0.0veya verilen arayüzü dinliyorsa, çalışacaktır, fakat dinliyorsa değil 127.0.0.1.
Naftuli Kay

18

Bunun ~/.ssh/configgerçekleşmesi için bazı SSH saldırıları kullandım:

Host hopper
    User naftuli
    ForwardAgent yes

Host overthere
    User naftuli
    ForwardAgent yes
    ProxyCommand ssh -q hopper nc overthere 22

Ne yapar ben bağlanmaya çalıştığınızda olmasıdır ssh overtheredan sittinghere, o bağlanır hopperve daha sonra port 22 SSH bağlantısı Proxies overthere(: üzerinde SSH yani overthere).

Bunun harika yan etkileri var:

ssh -L 5900:localhost:5900 overthere "x11vnc -display :0 -localhost"

Her şey müthiş ve bildiğim kadarıyla, 5900 tarihinde açılmaz söyleyebilirim olarak çalışır hopper, ancak doğrudan iletilen overthereiçin sittinghere.


Bu arada, bunu daha önce yapılan yorumlarda sormalıydım, ancak içine girdiğiniz çözüm, x11nvc man sayfasından 8-) çıktı. Üzgünüz, hangi VNC sunucusunu kullandığınızı sormayı düşünmedim.
slm

Bu bejeezusu benden korkutuyor, ama kesinlikle işe yarıyor!
Dale Anderson,

1
Bazı Linux dağıtımlarında (örneğin Ubuntu 14.04) netcat-openbsd varsayılan olarak kurulur. Bu durumda, bu hack çalışmayabilir. Bu sorunu çözmek için öncelikle netcat-traditional paketini ( apt-get install netcat-traditional -y) kurmalısınız . Sonra açıkça belirtmelidir nc(değiştirerek yapılandırma dosyasında türü ncile nc.traditional).
VeLKerr

@Naftuli: Gerçekten harika!
gitti

1
@AlexanderPozdneev netcat .
taylorthurlow

1

Sen bir port iletebilir sittinghereiçin overtherearacılığıyla bireyin SSH bağlantı hopper. Sonra overtheredoğrudan ulaşmak için o limanı kullanabilirsiniz sittinghere. Bu ikinci SSH oturumunda hopper, yalnızca şifreli bir SSH oturumu görürken VNC'yi veya istediğiniz diğer portları iletebilirsiniz .

İlk SSH oturumu:

ssh -f -N -L 7022:overthere:22 hopper

Şimdi SSH istemcisine overtherebu yapılandırmayı ekleyerek ona nasıl ulaşabileceğini söyleyin ~/.ssh/config.sittinghere

Host overthere
    HostName hopper
    Port 7022
    HostKeyAlias overthere

İkinci SSH oturumu:

ssh -f -N -L 5900:localhost:5900 overthere

Veya VNC port tüneli olmadan sadece düzenli bir etkileşimli SSH oturumu:

ssh overthere

Size satır eklemek zahmetinde bulunmak istemiyorsanız , komut satırından ~/.ssh/confignasıl bağlanacağınızı hala söyleyebilirsiniz overthere:

ssh -p 7022 hopper

... ancak HostKeyAliasSSH olmadan overthereanahtarın parmak izini doğru bir şekilde doğrulamaz .

Tüm komut satırları çalıştırılacak sittinghere.

Bu arada, muhtemelen ssh' -tseçeneğini tercih etmeniz gerekmediğini düşünüyorum .


1

İşçi ve ev bilgisayarı arasında tünel yaparken önce hazneyi bağlayın.

ssh -f ismail@hopper -L 2222:overthere:22 -N

Daha sonra vnc tüneli ile ssh ro overthere olun

ssh -p 2222 -f ismail@localhost -L 5900:localhost:5900

Şimdi vnc ile bağlantı kurabilirsiniz. Bu arada, vnc'nin localhost dinleme yapılandırmasını değiştirin


0

VNC istemcisini vncviewerkomut satırından kullanıyorsanız, başka bir ana bilgisayarın VNC sunucusuna bağlanmadan önce -viatünelden geçmek için bu düğmeyi kullanabilirsiniz user@host.

Örnek

$ vncviewer -via user@host localhost:0

vinagreGUI aracılığıyla böyle bir SSH tüneli üzerinden bağlanmak için de kullanabilirsiniz . Bunu yapmak için, bağlantınızı buna benzer şekilde bağlantı iletişim kutusundan ayarlayın vinagre:

              ss # 1

Bu bağlantınızın ortaya çıkmasına neden olacak ve SSH tüneli sunucusundan tünellenecek.

    ss # 2

Referanslar


0

Aşağıdaki komutu da mükemmel çalışması gerekir

ssh -f -N -J hopper overthere -L 5900:localhost:5900

PostgreSQL sunucusunu postgres-serverkişiselleştirilmiş bağlantı noktasında ( -pswitch) ve ayrıca özelleştirilmiş kullanıcı adı kullanarak bağlamak için ek parametre ile test edilmiştir .

ssh -f -N -J user1@jumphost -p 2222 user2@postgres-server -L 5432:localhost:5432

Gördüğünüz gibi bu çözüm basit ve ssh veya herhangi bir ara adımda herhangi bir yapılandırma değişikliği gerektirmiyor.

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.