port yönlendirme olmadan yönlendirici üzerinden ssh


11

Bir linux sunucum var ve bir yönlendiricinin arkasındaki bir ev ağına koymak istiyorum. Bu sunucuya bazen dışarıdan ssh ihtiyacım var, ancak yönlendiriciye erişimim olmadığı için bağlantı noktası yönlendirme ayarlamak istemiyorum ve yönlendiricinin ipini de bilmiyorum.

Yapabileceğim linux sunucusuna bir program koymak, bu yüzden internete bağlı olduğunda, sürekli diğer sunucuya online veri gönderecek, böylece IP adresini biliyorum. Ancak dışarıdan yönlendiricinin arkasındaki sunucuya ssh yapmanın bir yolu var mı? ağ bağlantısını sağlayan NAT veya soket gibi bir şey mi?

Çok teşekkürler

Yanıtlar:


24

Yapmak istediğiniz şey, "linux sunucunuzdan" dışarıdaki bir şeye "my_other_server" veya her iki sunucunun da alabileceği başka bir şeye ssh.

Ssh uzak port yönlendirme kullanırsınız.
[user@linux_server]$ ssh -R8022:localhost:22 my_other_server.com
Açıklama: my_other_server'a bağlanın ve 2222 numaralı bağlantı noktasında bana geri dönecek olan 8022 numaralı bağlantı noktasını açın.

My_other_server.com adresinden 8022 numaralı bağlantı noktasında localhost'a ssh edebileceksiniz ve trafiğiniz linux_server'da linux_server piggybacking'e yönlendirilebilecektir -> my_other_server tüneli [user@linux_server]$ ssh -p8022 localhost
Açıklama: linux_server'a yönlendirilen 8022 numaralı bağlantı noktasından kendime bağlanın

İlk linux_server -> my_other_server tünelinin bırakılmasıyla ilgili sorun yaşıyorsanız, açık tutmak, saklayıcı ayarlarını yapmak veya otomatik sh kullanmak için bir komut dosyası oluşturabilirsiniz.


1
Teşekkürler, harika çalışıyor! Komut dosyasını açık tutmak için kullanmak istiyorum. Diğer soru, eğer böyle 1000 'linux sunucusu' ve sadece bir 'my_other_server' varsa, bunlardan herhangi birine bu şekilde ssh yapabilir miyim? Hepsinin farklı limana ihtiyacı olduğunu ve bunu yapmanın daha iyi bir yolu var mı?
Jiechao Li

Bu duruma bağlı. Artık linux_server üzerindeyken, oradan linux_server2 ve linux_server3'e ssh yapabilir misiniz? En kolayı bu olurdu. Yani evet bunu birkaç kez yapabilirsiniz, 8022 kullanmak yerine 8023, 8024 kullanırsınız. Bu rotaya giderseniz "my_other_server" üzerinde tüm port numaralarını içeren bir ~ / .ssh / config dosyası oluşturun. ssh [port] localhost yerine sadece ssh [takma ad]. Bu hantal hale gelecek.
MattPark

1
Bunu sadece iki makine ile ayarlamak mümkün mü? B'yi A'ya, A'yı B'ye kendi kendine mi bağlar?
adamyonk

1
Sadece yaptım. Çalıştığını doğrulayabilir. \ o /
adamyonk

Evet dostum --- belli ki anladın. autosshAçık tutmak için bir şey kullanabilirsiniz .
MattPark

3

Bunu yapmak için bir çeşit VPN kullanabilirsiniz, ancak erişilemeyen sunucunun erişebileceği bir sunucuya sahip olmanız gerekir. Ardından sunucuya, PC'nize ve güvenlik duvarı sunucusuna OpenVPN kurabilir, etkinleştirebilir client-to-clientve işiniz bitti. http://openvpn.net/howto.html


Teşekkürler. Buna bakıyorum, ama biraz karmaşık görünüyor. Doğru anlarsam, yönlendiriciyi yapılandırmadan iletişim kurabilmeleri için her iki sunucuya da OpenVPN yüklemem gerekir, değil mi?
Jiechao Li

Kesinlikle. Bir sunucuyu "sunucu" olarak yapılandırırsınız, ardından yapılandırmada birbirine bağlı "istemciler" olarak iki istemciyi yapılandırırsınız. Yine de, yukarıda belirtilen ters SSH sizin için daha kolay görünüyor.
Nathan C

3

Bu cevap kabul edilene dayanıyor, ancak yapmamı sağlayan detayları ekliyor. Yaya açıklaması için özür dilerim, çünkü bu benim uzmanlık alanım değil.

Eğer iki bilgisayar var, varsayalım Ave B. Sen istiyorsan sshden Aüzere Bve bunlara bağlı yönlendiriciler herhangi port yönlendirme yapamaz.

Kabul edilen yanıtın belirttiği gibi, bunu Syapmak için bir sunucuya ihtiyacınız vardır : bilgisayarda B, sshbağlantıların gelmesine izin vereceksiniz S; ve bilgisayardan ulaşmak için Ao tünele Serişeceksiniz B.

Peki bu sunucuyu nasıl edinebilirsiniz S? Buldum serveo(bağlantı: https://serveo.net/ ). Çok basit kullanımlıdır. Herhangi bir şey yüklemenize veya kaydolmanıza gerek yoktur ve ücretsizdir. Web sitesine göre, izlenecek adımlar şunlardır:

  1. Bilgisayar için bir takma ad düşünün B. Örneğin computer_B_alias,.

  2. Bilgisayarda B, yürütün ssh -R computer_B_alias:22:localhost:22 serveo.net.

  3. Şimdi, bilgisayara aşağıdakileri yürüterek Bbilgisayardan bilgisayara erişebilirsiniz : burada kullanıcının bilgisayar adıyla değiştirilmesi gerekir .AAssh -J serveo.net user@computer_B_aliasuserB

PS: Elbette, bilgisayarınızı başlatırken 2. noktayı otomatik bir görev haline getirirsiniz B.

PSS: Bunu denemeden önce ssh, her iki bilgisayara da yüklendiğinden emin olun . Ubuntu sudo apt-get install sshiçin bu işi yapardı.


1
Teşekkürler, bu da ihtiyacım olan eksik bağlantıydı. Serveo çalışmıyor gibi görünüyor. Bu iki alternatifi oldukça kullanışlı buldum: ngrok & localhost.run !
DannyDannyDanny

1

Cevaplamak için uzun zaman, umarım şimdi aynı şeyi arayan birine yardımcı olabilir.

NAT'ın arkasındaki bir sunucuya erişmek istiyorsanız ve kod yazmak istemiyorsanız, muhtemelen aşağıdakiler arasından bir araç arayabilir ve ihtiyaçlarınıza uygun olanı kullanabilirsiniz.

Yukarıdaki araçların her ikisi de istemcilerini yüklemek için linux makinesine erişiminiz olduğunu varsayar.

  • Her ikisi de web arayüzünü kullanarak terminale erişmenizi sağlar
  • Kendinize ait bir ara ssh ana bilgisayarına ihtiyacınız yoktur.
  • Kurulumu çok kolay
  • Her ikisi de açık kaynak

Kişisel olarak daha fazla tmate'i tercih ediyorum, çünkü tmate sunucusunu kendi ara sunucunuzda (ters ssh için) barındırabilirken, telekonol sadece kendi sunucularına ters ssh için bağlanabilir.


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.