Tek bir komutla bir ara makine üzerinden ssh bağlantısı tünelleme


10

Tek bir komutla, A bilgisayarımdan B bilgisayarından C bilgisayarına ssh bağlantısı kurmanın bir yolu var mı?

Bir kırışıklık (-L seçeneğini kullanarak ssh bağlantısını yönlendirmeyi ekarte ettiği anlaşılıyor), B bilgisayarındaki hesaba parolamın olması ve B bilgisayarındaki hesabın C bilgisayarındaki hesaba bağlanma yetkisine sahip olması, ancak C bilgisayarında hesabın şifresi yok.


Yanıtlar:


8

Sadece C bilgisayarına giriş yapmak istediğinizi anladım, A'dan C'ye bir şey tünel açmak değil, bu hile yapmalı:

ssh -t computer-b "ssh computer-c"

Parolaları önce iki kez, sonra C bilgisayarı için iki kez girmeniz gerekebilir, ancak ssh'ın anahtar çifti kimlik doğrulaması kullanılarak bu önlenebilir.


1
Teşekkürler - işe yarıyor! Bir takip isteyecek kadar cesur olursam. Herhangi bir fikir nasıl tek bir komutla A'dan C'ye bir dosya scp olabilir?
sanity

Bu biraz zor. Karışıma katran ekleyerek yapılabilir, ancak yalnızca bir dosya ve B bilgisayarında bir süre tutmak için disk alanı varsa, iki adımda kopyalamak çok daha kolaydır.
af.

Bunu üç kez de yapabilirsiniz! ssh -t computer-b "ssh -t computer-c 'ssh computer-d'": D
gak

0

Muhtemelen SSH'nin ProxyCommand'ını kullanmak istersiniz: http://benno.id.au/blog/2006/06/08/ssh_proxy_command


Bu işi yapmanın bir yolunu bulamıyorum çünkü C bilgisayarının şifresine sahip değilim ve bu yaklaşım bunu gerektiriyor gibi görünüyor. Bu yaklaşım daha zarif göründüğü için önerilere açık.
aklı

0

Ssh tuşlarını kullanıyorsanız, B makinesi için yeni bir anahtar oluşturabilir ve bunu A'dan B'ye bağlamak için kullanabilirsiniz. B makinesine,

command="ssh C" ssh-....

içinde ~/.ssh/authorized_keysdosyaya. Bu, bu ssh tuşuyla B'ye her bağlandığınızda ssh Ckomutu yürüteceği anlamına gelir .

Bunun scp ile çalışıp çalışmadığını bilmiyorum.


0

kullanım ProxyCommand

Bkz man ssh_config. Kullanmanızı tavsiye ederim ProxyCommand. Orijinal senaryonuzu ele alalım:

  • Bilgisayar A (bilgisayarınız)
  • Bilgisayar B (proxy ana bilgisayar adı)
  • Bilgisayar C (yalnızca Bilgisayar B'den SSH üzerinden erişilebilir)

Düzenleme ~/.ssh/configAşağıdaki içeriği ile.

Host computerb
    HostName <hostname or IP of Computer B>

Host computerc 192.168.35.*
    ProxyCommand ssh computerb nc -w 180 %h %p

Artık C bilgisayarına şeffaf bir şekilde ulaşabilirsiniz.

ssh computerc

Bu yöntemin avantajları

Daha güvenli

Özel anahtarınızın yalnızca A Bilgisayarında (bilgisayarınızda) olması gerekir. ncKomutu SSH üzerinden trafik şifreler olduğu bir proxy olarak hareket edecektir. Buna kimlik doğrulama da dahildir. Özel anahtarınızı birden çok sunucuya dağıtmak çok kötü bir fikirdir (özel anahtarınızla güvenliği ihlal edilmiş herhangi bir sunucu sonuçta özel anahtarınızın güvenliğini tehlikeye attığından).

Birden fazla hedefle eşleşir

Bir kullanarak birden fazla hedef bilgisayar eşleşebilir Host. Tek bir bilgisayar veya belirli bir ağdaki herhangi bir bilgisayar (örn 192.168.35.0/24. Yukarıdaki örnekte) Bilgisayar B aracılığıyla proxy yapmak için kullanılır. Ayrıca diğer ad olarak da işlev görür.

ssh 192.168.35.27

Yukarıdaki örnekte, IP adresine ulaşmak için B Bilgisayarı üzerinden proxy gönderilecektir.

Papatya zinciri vekilleri

Bu yöntemi kullanarak, gerektiği kadar çok sayıda otomatik proxy'yi papatya dizimi yapabilirsiniz. örneğin , yalnızca C bilgisayarından erişilebilen bir Bilgisayar D ekleyebilirsiniz ve saydam olarak çalışacaktır.

Host computerd
    ProxyCommand ssh computerc nc -w 180 %h %p

ssh computerdyukarıdaki ssh_configörneklerde Bilgisayar C ve Bilgisayar B aracılığıyla otomatik olarak proxy uygular.


ProxyCommand yerine ProxyJump kullanıyorum ve iyi çalışıyor. Artık daha fazla seçenek var gibi görünüyor.
fgiraldeau
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.