Bu tür şeyleri görselleştirme yoluyla açıklamayı seviyorum. :-)
SSH bağlantılarınızı tüp olarak düşünün. Büyük tüpler Normalde, uzak bir bilgisayarda bir kabuk çalıştırmak için bu tüplere ulaşırsınız. Kabuk sanal bir terminalde çalışır (tty). Ama sen bu kısmı zaten biliyorsun.
Tüneli bir tüpün içindeki bir tüp olarak düşünün. Hala büyük SSH bağlantınız var, ancak -L veya -R seçeneği içinde daha küçük bir tüp kurmanıza izin veriyor.
Her tüpün bir başlangıcı ve bir sonu vardır. SSH bağlantınız olan büyük tüp SSH istemcinizle başladı ve bağlandığınız SSH sunucusunda sona erdi. Küçük tüplerin tümü aynı uç noktalara sahiptir; ancak "başlangıç" veya "son" rolünün, bunları oluşturmak için -L
veya -R
(sırasıyla) kullanıp kullanmamaya göre belirlenmesi haricinde belirlenir .
(Söylemediniz, ancak güvenlik duvarının arkasındaki bilgisayardan bahsettiğiniz "uzak" makinenin Ağ Adresi Çevirisi (NAT) kullanarak İnternete erişebildiğini varsayacağım. lütfen yanlışsa bu varsayımı düzeltin.)
Bir tünel oluşturduğunuzda, cevaplayacağı bir adres ve bağlantı noktası ve teslim edileceği bir adres ve bağlantı noktası belirtirsiniz. -L
Opsiyon tüneli (ana bilgisayar müşterinize çalıştıran) lokal tarafında cevap tüneli anlatır. -R
Seçeneği uzak tarafında (SSH sunucusu) üzerinde cevaplamak için tünel söyler.
Yani ... İnternetten bir güvenlik duvarının arkasındaki bir makineye SSH yapabilmek için, söz konusu makineye dış dünyaya bir SSH bağlantısı açmanız ve -R
"giriş" noktası "uzak" tarafı olan bir tünel eklemeniz gerekir . onun bağlantısı.
Yukarıda gösterilen iki modelden birinin sağda olmasını istersiniz.
Güvenlik duvarı ana bilgisayarından:
ssh -f -N -T -R22222:localhost:22 yourpublichost.example.com
Bu, müşterinize bir -R
emote giriş noktası olan bir tünel kurmasını söyler . Tünelin uzak ucundaki 22222 numaralı limana takılan herhangi bir şey, "localhost" un tünelin çıkış noktası (yani ssh istemciniz) perspektifinden olduğu “localhost port 22” ye ulaşacaktır.
Diğer seçenekler:
-f
kimliğini doğruladıktan sonra ssh'nin kendisini arkaya bildirmesini sağlar, böylece tünelin hayatta kalması için uzak sunucuda bir şeyler çalıştırarak oturmak zorunda kalmazsınız.
-N
SSH bağlantısı istediğinizi, ancak gerçekte herhangi bir uzak komutu çalıştırmak istemediğinizi söylüyor. Yarattığınız tek şey bir tünelse, bu seçeneğin dahil edilmesi kaynakları korur.
-T
Etkileşimli bir kabuk oluşturmaya çalışmadığınız için uygun olan sözde tty tahsisini devre dışı bırakır.
Parolasız bir oturum açma için DSA veya RSA anahtarlarını ayarlamadıysanız, bir parola mücadelesi olacaktır.
Sadece bu tünel / müşteri / sunucu için kurduğunuz bir fırlatma hesabı (kendi giriş bilgilerinizi değil) kullanmanız şiddetle tavsiye edilir.
Şimdi, genel evinizdeki kabuğunuzdan , güvenlik duvarı olan ana makineyle tünel üzerinden bir bağlantı kurun:
ssh -p 22222 username@localhost
Muhtemelen daha önce hiç bu ana makineye isabet etmediğiniz için bir ana bilgisayar anahtar mücadelesi alırsınız. Ardından username
hesap için bir şifre ile karşılaşacaksınız (şifresiz giriş için anahtarlar ayarlamadıysanız).
Bu ana bilgisayara düzenli olarak erişecekseniz, ~/.ssh/config
dosyaya birkaç satır ekleyerek erişimi de basitleştirebilirsiniz :
host remotehostname
User remoteusername
Hostname localhost
Port 22222
Ayarlayın remotehostname
ve remoteusername
uygun. remoteusername
Alan uzak sunucudaki kullanıcı adınızı eşleşmesi gerekir, ancak remotehostname
size uygun herhangi bir konak ismi, bu çözülebilir bir şey eşleşmesi gerekmez.
( Localhost olmayan bir IP üzerinde ters uç noktasını göstermek için bu gönderiye göz atın )