SSH'yi SSH tüneli üzerinden iletin


30

Benim durumum :

Ben (localhost) -> Sunucu A (ip: 100.100.100.100) => (sunucu B (ip: 192.168.25.100), sunucu ....)

Sunucuya bağlanmak istediğimde gerçek bir ip olduğundan dolayı sunucuya SSH gönderebiliyorum, ssh sunucusuyla birlikte ssh kullanıyorum (192.168.25.100)

örnek:

bilgisayarımdan:

ssh user@100.100.100.100

sonra 100.100.100.100’de,

ssh user@192.168.25.100

bu beni ssh ile B sunucusuna ulaştıracak

b sunucusuna doğrudan bağlanmak istersem ne yapmalıyım? bunu nasıl yapabilirim?

örnek:

ocumdan:

ssh@192.168.25.100

aşağıdakileri denedim:

ssh -L 22:localhost:22 user@100.100.100.100

başarısız

Yanıtlar:


30

Sorununuz bir dinleyiciyi localhost'a bağlamak: 22; Bunu dinleyen bir sshd zaten var. Bir ssh bağlantısını bir ssh bağlantısı üzerinden tünel yapmak tamamen yasaldır ve bunu her zaman yapıyorum, ancak yönlendirme dinleyicileriniz için kullanılmayan bağlantı noktaları seçmeniz gerekiyor.

Deneyin

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

sonra

me% ssh localhost -p 2201

B sunucusunda son bulmalısınız (zaten bir şey bana bağlı değilse: 2201, bu durumda, başka bir bağlantı noktası seçin).


hızlı cevap için teşekkürler! ancak çalışır, ancak sadece ssh (22) yerine tüm bağlantıları nasıl iletebilirim?
tom91136

1
Bu sadece port yönlendirme değil, aradığınız tam gelişmiş bir VPN. Bodhizazen.net/Tutorials/VPN-Over-SSH adresinde vpn-over-ssh işleminin nasıl yapılacağı hakkında bir yazı var , ancak A'daki ssh üzerinden uzaktan root erişimi gerekiyor, ya da OpenVPN ya da diğer VPN çözümlerini inceleyebilirsiniz, fakat tekrar tekrar, Bu işleri yapmak için A'da ayrıcalıklara ihtiyacınız olacak.
MadHatter,

çok teşekkürler, son bir şey, ya sadece A'ya bağlanmak istersem?
tom91136

me% ssh user@100.100.100.100; Bunu zaten örtbas etmedik mi? ya da "ya A için tam gelişmiş bir VPN istiyorsam?", bu durumda cevabım geçerli değil mi?
MadHatter,

1
SSH üzerinden VPN isteyen kişiler için sunucuya kök erişimi yok, ancak Python'u var, sshuttle'ı deneyin .
André Paramés

23

Proxy aracılığıyla bir iç bilgisayara ssh için ssh port yönlendirme kullanmanız gerekmez. Ssh özelliğini kullanarak 3. bilgisayara bağlanabilmek için bağlandığınız ilk sunucuda komut çalıştırma kullanabilirsiniz.

ssh -t user@100.100.100.100 ssh user@192.168.25.100

Bu -tseçenek, ssh'yi sahte bir tt ayırmaya zorlar, böylece etkileşimli bir komut çalıştırabilirsiniz.

Bu ssh tuşlarıyla da çalışabilir. Makine A'da özel ve genel anahtarınız ve makine B ve C'deki yetkili anahtar dosyalarında ortak anahtarınız varsa -A, kimlik doğrulama aracısı bağlantısını iletmek için bu seçeneği kullanabilirsiniz .


10

Farklı bir çözüm kullandım. Bir ProxyCommandseçenek kullandım (burada ~/.ssh/config):

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

Bu, herhangi bir porttan diğerine tünel kurmaz, standart stdin / out kullanarak ssh tünellerini ayarlar. Bu yöntem, kimlik doğrulaması için gerçekte üç ssh bağlantısı bulunduğunun bir dezavantajına sahiptir. Ancak, dahili ana bilgisayara bağlanmak için şunu yazın:

ssh myinsidehost2

... bu tünel için herhangi bir IP seçmeye özen göstermenize gerek yok.


1
Çalışırken bulduğum tek SSH istifleme yöntemi bu. Ben denedim corkscrewveya nc( netcat) ama hiçbiri bu kadar sorunsuz çalışmamaktadır.
Phuong Nguyen,

7

ssh man sayfasına göre, ProxyCommand doğru yöntemdir

sözdizimi:

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

-WBu soruya cevap verildiğinde seçeneğin mevcut olduğundan emin değilim . Ancak, ssh istemcisinin daha yeni sürümleriyle, kombinasyonun ProxyCommandve -Wtercih edilen yöntemin bu olduğuna katılıyorum . Belki hem komut satırında nasıl kullanılabileceğini hem de bunun için bir bölüm örneği gösteren bir bağlam ekleyebiliriz .ssh/config.
kasperd

SSH'nin hangi sürümlerinin -Wkomut sahibi olduğunu ve hangilerinin olmadığını söyleyen değişiklik / sürüm bilgilerini nerede bulacağınız hakkında bir fikriniz var mı? Bir miktar googling benim için hızlı bir şekilde cevap vermedi ...
dmh

-W2010 yılında piyasaya sürülen OpenSSH 5.4 ile tanıştı. Yani cevap evet @ kasperd
0xC0000022L

7

OpenSSH 7.3'ten itibaren (2016 sonu) en kolay yol ProxyJump ayarıdır. İçinde ~/.ssh/config:

Host B
  ProxyJump A

Veya komut satırında,, -J B.

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.