SSH tüneline bir ana bilgisayar adı nasıl atanır?


17

ssh root@my.server.ip -g -L 4321:localhost:28017 MacBook'umdan hosting sağlayıcımdaki özel sunucuma tünel kurmak için kullanıyorum . İyi çalışıyor. Şimdi uzak sunucudaki birkaç yönetici sitesine erişmek istiyorum (hepsi farklı bağlantı noktalarında bir MongoDB durum sayfası, bir RabbitMQ sayfası vb.). Hepsi uzak makinede 127.0.0.1'e bağlıdır. Bu ssh komutunu nasıl değiştirebilirim

  • tünele bir ad atayın ve tarayıcımda örneğin "my.tunnel.name" kullanın
  • tarayıcımda uzak bağlantı noktasını tanımlayabilme; Farklı siteleri arayabilmek için my.tunnel.name:port adresine bağlanmak istiyorum

Bu ssh ile mümkün mü? Adam sayfalarını okudum ve iki günlüğüne dolaştım, ama işe yaramıyor gibi görünüyor.

--edit 2012-06-01 23: 36-- Verilen cevaplar ve yorumlar sayesinde liman yönlendirme şu anda kullanıyor

ssh user@remote.server -D 4321

Bunu tarayıcımda bir proxy olarak ayarlayabilirim ve tarayıcı localhost'a yapılan herhangi bir talebi ele alacaktır: anyport, uzak sunucuda yapılmış gibi. Tarayıcı yalnızca uzak sunucu siteleri için olduğundan, bir ad kullanmak artık gerekli değildir.

Yanıtlar:


12

Tarif ettiğiniz şey mümkün değil. Ancak hala iyi haberler var:

Ancak mümkün olan SSH Sunucusu ile Dinamik bağlantı kurmaktır. Bu, yerel bilgisayarınızda Tarayıcınızın Proxy ayarını gösterebileceğiniz ve tüneli proxy sunucusu olarak kullanmanıza izin verebileceğiniz bir bağlantı noktası açar. Ancak tarayıcıya, SSH Sunucusunun açık olduğu makinede çalışıyormuş gibi bir ana bilgisayar adı / ip ve bağlantı noktası yazmanız gerekir.

Komut şuna benzer: ssh user@server.example.com -D 1234
Ardından tarayıcınızın proxy'sini işaret edin localhost:1234.

Bu nedenle, Sunucu A'ya tünel veriyorsanız ve sunucu B'ye bağlanmak istiyorsanız, Sunucu A'da çalışan bir Tarayıcıya gireceğiniz adresi tarayıcınıza yazarsanız, Sunucu A'da çalışan bir tarayıcı Sunucu B'ye bağlanamazsa ( Sunucu B'deki işlem yalnızca 127.0.0.1'de dinler), o zaman yine de bağlanamazsınız. Sadece bir sunucunuz var gibi görünüyor, ama bunun açık olduğundan emin olmak istedim.

Yalnızca bir sunucunuz varsa, Dinamik bağlantıyla tünel oluşturursunuz, proxy'nizi ayarlayın. Daha sonra tarayıcıya "localhost: 1234" (örneğin) yazabileceksiniz ve 1234 numaralı bağlantı noktasındaki uzak sunucuda çalışan hizmete bağlanacak.

Securit Side Not: Asla hiçbir zaman root'un SSH'nin girebileceği bir sunucu kurmayın! Ciddi güvenlik açığı. Bu kullanıcı olarak normal bir kullanıcı hesabı (su veya sudo'ya izin verilen) ve SSH oluşturun.


2
-D 1234 (ileri dinamik bağlantı noktası) kullanmanız gerektiğinde -L 1234 (yerel bağlantı noktası ileri) kullanıyorsunuz. Ve belki de -g, -g kullanmaktan kaçının, uzak ana makinelerin ileriye bağlanabileceği anlamına gelir, bu da bunu iş istasyonunuzdan yapıyorsanız istediğiniz şey değildir.
Mattias Ahnberg

Teşekkürler, Chris. Bunu zaten denedim. Ssh komutunu yalnızca belirtilen bir bağlantı noktasıyla kullanamıyorum. Bir hata döndürür: "Kötü yerel yönlendirme özelliği '1234'"
brains_at_work

@ matthias-ahnberg: Harika, bu hile yaptı. dinamik yönlendirme ile, şimdi bir proxy ve localhost olarak bağlantı noktasını kullanabilirsiniz: someport çağrıları uzak sunucuya yönlendirilir.
brains_at_work

@MattiasAhnberg Vay be, ne beyni. Düzeltme için teşekkürler.
Chris S

Bu işlemi izledim ancak firefox'ta "Bağlantı sıfırlandı" hatası aldım.
rivu

23

Geri döngü bağdaştırıcınızın temel olarak 127.0.0.0/8 ağındaki herhangi bir adrese yanıt vermesini kullanarak bir ad atayabilirsiniz.

Böylece, bağlantı noktası 4321'e bağlanmak yerine 127.1.2.3:4321'e bağlanabilirsiniz. Ardından, foo.bar eşlemelerini kullandığınız geri döngü adresiyle bir ad eşleyen bir ana bilgisayar girdisi kurmanız yeterlidir 127.1.2.3.

Yönetici iş istasyonumdaki SSH yapılandırmamda, geri döngü aralığındaki bir adrese bağlanacak şekilde yapılandırılmış birçok tünel var ve ana bilgisayarımdaki girdilerim var, bu yüzden aynı bağlantı noktasını kullanarak birçok tüneli paralel olarak açıyorum ve adlandırın.

Yani böyle bağlanırsanız

ssh root@my.server.ip -g -L 127.1.2.3:4321:localhost:28017

Ve hosts dosyanızın böyle bir satırı vardır.

127.1.2.3 my.tunnel.name

Ardından, yerel makinenizden my.tunnel.name:4321 adresine bağlanabilmeniz gerekir.

Ağda ek IP adresi alanınız varsa, ssh istemciniz bağlıysa, Ethernet arabiriminize ikincil bir adres atayabilir ve gerçek IP'lerinizden birini kullanabilir ve ardından diğer sistemlerin kullanabilmesini istiyorsanız DNS'nizdeki girişleri ayarlayabilirsiniz. SSH tünelinizi kullanmak için.

-L seçeneği -L [bind_address:]port:host:hostport, bağlanmak için yerel sistemdeki geçerli herhangi bir IP adresini kullanmanıza izin verir. -gDiğer ana makinelerin ssh tüneliniz üzerinden bağlanabilmesini istiyorsanız , seçeneği de eklemeniz gerekir .


Ben ip's osx benim loopback eklemek zorunda kaldı. ifconfig l0 alias 127.0.1.1 255.255.255.0aksi takdirde büyük ipucu!
devians

1
Bir kabuğun oluşturulmasını istemiyorsanız -N, komutun sonunda çalıştırın . Bu şekilde, sadece herhangi bir SSH bağlantısı değil, bir tünel olduğunu hatırlamak daha kolay.
mlissner

Kullanırken 127.1.2.3bunu macbook'ta yapmak zorunda kaldım: arayüzde yeni bir adres olarak ifconfig lo0 alias 127.1.2.3 255.255.255.0ekleniyor . 127.1.2.3lo0
Donn Lee

5

SSH tünelinizle bir Dinamik uygulama düzeyinde bağlantı noktası iletme (temelde proxy çoraplar) oluşturun ve ardından uygulamalarınızı buna yönlendirin. Dinamik bir tünel oluşturmak için aşağıdaki gibi bağlanın:

ssh user@host.domain.com -D 127.0.0.1:31337

Ardından uygulamanızı bunu bir SOCKSv5 proxy'si olarak kullanacak şekilde yapılandırın.

Buna bağlı bir ana bilgisayar adı istiyorsanız, yalnızca /etc/hosts127.0.0.1'e işaret eden girişler ekleyin , ancak ilk tünel için 127.0.0.2'yi ve bunun için bir ana bilgisayar girdisi, ikincisi için 127.0.0.3 eklemek daha güzel bir yol olabilir. tünel ve bunun için ayrı bir ana bilgisayar girişi, vb. 127.0.0.1 için takma adlar eklerseniz, bazen bu takma ad diğer kafa karıştırıcılarda yerel ana bilgisayar aramalarında görünecektir!

Bunu sorunsuz bir webbrowser kullanmak için bir proxy addon kullanabilirsiniz, bir örnek olarak ben Chrome webbrowser lehine ve bunun için adlı bir addon kullanın Proxy Switchy!. Buradan indirebilirsiniz:
https://chrome.google.com/webstore/detail/caehdcpeofiiigpdhbabniblemipncjj

Bu eklentinin yapılandırmasında birkaç ayrı proxy tanımlayabilir ve daha sonra belirli proxy'leri kullanmak için düzenli olarak ana bilgisayarların / URL'lerin ifadelerini bağlayabilirim, bu şekilde her zaman el ile geçiş yapmak zorunda kalmadan doğru tünellerden düzgün bir şekilde yönlendirilirim. Adımlardan herhangi biri hakkında daha fazla açıklamaya ihtiyacınız varsa lütfen bize bildirin!


Eklenti ipucu için teşekkürler. Chrome'u da kullandığım için FireFox'u da açık tutmam gerekmiyor.
brains_at_work
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.