Bazen ihtiyacımız var verileri bir soket aracılığıyla iletmek Telnet bağlantısı, FTP dosyası indirme, SQL sorgusu veya başka herhangi bir iletim türü gibi farklı makineler arasında.
Bu veriler ağda işlenmemiş olarak dolaşır. Ben güvensizBu, başlangıç ile hedef arasındaki yolda bulunan herhangi bir düğüm tarafından yakalanabilecekleri anlamına gelir, yani, Robados.
Bu verilerin yakalanmasını engelleyemeyiz, ancak önleyebileceğimiz şey, üçüncü şahıslar tarafından yorumlanması ve anlaşılması, iletişimi şifrelemesidir.
SSH yapmamızı sağlayan araçtır güvenli bağlantılar makineler arasında. En yaygın kullanımı, bir komut yorumlayıcısına uzaktan bağlanmaktır.
Ancak, oluşturmak gibi başka olanaklar da sunar. şifreli tüneller farklı makineler arasında.
Diyelim ki ana bilgisayar1'den ana bilgisayar2'ye telnet yapmak istiyoruz:
host1$ telnet host2
Bu iletişim tamamen açıktır ve kesişmiş. Bunu korumak için, 5000. ana bilgisayar üzerinde rastgele seçilen bir bağlantı noktasını (örneğin 1) ana bilgisayar23'deki bağlantı noktası 2'e (telnet) yönlendireceğiz.
Bu şekilde, ssh'nin ana bilgisayar5000'nin 1 numaralı bağlantı noktasından açılan tünelde şifrelenmiş olarak seyahat etmek için ana bilgisayar22'in 2 numaralı bağlantı noktasına gönderilen tüm verileri alacağız ve ardından ana bilgisayar23'nin 2 numaralı bağlantı noktasına yeniden yönlendirilerek nihai hedefine ulaşacağız.
Bunu yapmak için, host2'nin kullanıcı adını ve şifresini bilmemiz gerekir.
Tüneli açmak için şunu yazıyoruz:
host1$ ssh -R 5000:localhost:23 usuariohost2@host2
Peki:
host1$ ssh -L 5000:host2:23 usuariohost2@host2
Her iki seçenek de eşdeğerdir. Telnet bağlantısını kurmak için artık host2'ye değil, host1'de seçilen porta atıfta bulunuyoruz:
host1$ telnet localhost 5000
Bununla, telnet veya başka türlü herhangi bir iletişimi güvenli hale getiriyoruz. Biraz daha araştırdığımızda göreceğiz ki gücü sayesinde SSH Bu yönlendirmeler üçüncü makinelere de yapılabilir, bu da bize tek bir giriş noktasıyla tüm LAN'dan farklı bir LAN'a güvenli bir şekilde erişebilmemizi sağlar.
Teori son derece ilginç görünüyor, ancak pratik bir durum görseydik daha da ilginç olurdu.
Ama gerçek şu ki, kısa olsam da makaleyi sevdim.
belki ilham aldığın wiki'ye bakarken https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
ve aynı, ancak autossh bölümü https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
Aslında, ssh ile gönderebileceğiniz herhangi bir şey, ister akış, ister ana bilgisayara bağlantılar olsun. vb. x nedenden dolayı onları şifrelemek istiyorsun.
ve safecrt kuralları
Bazen SSH'yi çok temel düzeyde kullanıyorum. Varsayılan bağlantı noktası 22'dir, değil mi?
Öyleyse, doğru anlarsam, bilgisayarım ana bilgisayar 1 ve bağlanmak istediğim ana bilgisayar2 ise, bu tünel 5000 numaralı bağlantı noktası ile 23 numaralı bağlantı noktası arasında bir bağlantı oluşturur ve ardından 22 numaralı bağlantı noktasında sonlanır mı?
Neden bağlantı noktalarını değiştirme nedenleri var? 22 numaralı bağlantı noktasıyla bir tünel oluşturabilir misiniz?
Çok ilginç makale. Nano gibi, daha fazlasını istemeye başladım!
SSH, aslında varsayılan olarak 22 numaralı bağlantı noktasını kullanır (değiştirilebilir olsa da). Bu bağlantı noktası, iki ana bilgisayar arasındaki gerçek iletişimin kullanacağı bağlantı noktasıdır. Açık olduğundan ve hiçbir güvenlik duvarı tarafından kapatılmadığından emin olmanız gereken şey budur. Ancak kullanıcı için tamamen şeffaftır. Unutabilirsin. Örnekte, yeniden yönlendirme 5000 ve 23 numaralı bağlantı noktaları arasındadır. Endişelenmeniz gereken tek şey bu ikisi. Kullanıcı, ana bilgisayarının 5000 numaralı bağlantı noktasına gönderdiği her şeyin hedef ana bilgisayarın 23'ünde göründüğünü görecektir.
Açıkçası, her kullanıcı uygun gördüğü portları yeniden yönlendirebilir.
Yorumlarınız için teşekkürler. Bu benim ilk yazım ve fikirleriniz bir sonrakini daha iyi hale getirmeye yardımcı olacak.
Bu VPS ile de yapılabilir mi?
Tamam bu benim durumum, PC1'in bir sunucuya erişimi var, ancak PC2'nin her ikisi de ssh ile bağlanmıyor, PC2'de erişim sahibi olmak istiyorum, ancak PC1'in hangi portunu yeniden yönlendirmeliyim? eğer aslında istediğim PC2'den sunucu portuna ulaşmak ve paketlerin kaynak ip olarak PC1'e sahip olması. anlıyor muyum
Anlatıyorsun kendini. Bu durumda, bir PC1 bağlantı noktasını sunucunun 2 numaralı bağlantı noktasına yeniden yönlendirmek için PC22'e ihtiyacınız vardır:
PC2 $ ssh -L 5000: Sunucu: 22 kullanıcı PC1 @ PC1
ve bu bağlantıyı başka bir terminalden açık tutarak:
PC2 $ ssh userServer @ localhost -p 5000
ve zaten içeridesin.
Nihayet işlevsel bir çözüm !! Teşekkürler Getafix, bana bir olasılıklar dünyası verdin !!
Memnun oldum!
Excelente artículo. Bienvenido a DesdeLinux 😀
Ve eğer 22 engellenirse ne yapmalıyız? LOL ..
Teşekkürler elav.
22 numaralı bağlantı noktasını engellediyseniz, mmmm, XD güvenlik duvarını kırmak için bir alternatif aramamız gerekecek
Ve hepsinden kötüsü (varsayımsal): VPS sağlayıcısı tarafından engellenmiş olmasıdır.
Birkaç saat önce bununla ilgili sorularla bir sınav yaptım 😛
Ben şunu söylemem:
host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
diğer komut satırına eşdeğerdir ... -L olanı.
-R, yeni bağlantılara açılan bağlantı noktasının uzak tarafta, yani ssh sunucunuzun tarafında olduğunu gösterir; while -L, yeni bağlantıları almak için istemci tarafında Yerel tarafta bir bağlantı noktası açar.
Satırın çevirisi:
host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
Bunun gibi bir şey olabilir: ana bilgisayar1'de olmak, kullanıcı kullanıcı ana bilgisayarım ile ana bilgisayar22'nin ssh sunucusuna (bağlantı noktası 2) bağlanın ve ana bilgisayar2'nin 5000 numaralı uzak bağlantı noktasında üretilen bağlantıları ana bilgisayar2'deki bağlantı noktası 23'e iletin (yerel ana bilgisayarım)
Değilse beni düzeltin! 😉
-
Öte yandan ... bir sunucu bağlantı noktası 22'ye bağlantı girişini engellediyse, yani ssh sunucusuna uzaktan bağlanamayız; ne yapılabilir; sunucudan (uzak ana bilgisayar2 sisteminin güvenlik duvarının arkasındaki bir arkadaş sysadmin) bir komut satırı yürütülür:
host2 $ nohup ssh -fN -R 6000: localhost: 22 userhost1 @ host1
-f arka plana gider
-N uzaktan kumandada herhangi bir komut yürütmez
nohup, oturum kapatıldığında komutun yürütülmesinin kesintiye uğramasını engeller
ana bilgisayar1 $ ssh kullanıcıhost2 @ localhost -p 6000
Bu şekilde, ana bilgisayar1'den, bağlantı noktası 1 üzerindeki localhost'a (aynı ana bilgisayar6000), bağlantıyı kullanıcı ana bilgisayar22 ile oturum açacağımız uzak sistem ana bilgisayar2'nin 2 numaralı bağlantı noktasına iletecek bir bağlantı oluştururuz.
Bu (denemedim ama işe yarıyor gibi görünüyor) firewal tarafından engellenen bir ssh sunucusunda içeriden biraz yardım alarak oturum açmaya izin verirdi! 😀
İkincisi, The Geek Stuff dergisinde yapılan bir açıklamadan okudum
http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/
Yayınınızı gerçekten beğendim; Onları sık sık okurum!
Selamlar.
Haklısın. Makalede bir hata var. Yönlendirmeler eşdeğer değildir. Host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 komutu, ters yeniden yönlendirme gerçekleştirir, yani, 5000 numaralı uzak bağlantı noktasını, -L ile komutun yaptığının tersine, 23 yereline yeniden yönlendirir.
Düzeltme için teşekkürler.