| |
|
|
|
|
 |
Administrator
Mesaj sayısı 178
Kayıt Tarihi: 27.02.2007, 00:08:44
|
SSH nedir, nasıl kullanılır?
SSH Secure SHell’in kisaltilmis halidir. OpenBSD projesi içerisinde OpenSSH adiyla dogmus bir alt projedir. Telnet, rsh, rlogin gibi uzaktan UNIX yönetmeye yarayan araçlarin yerine güvenli bir çözüm olmasi amaciyla gelistirilmistir. Ön tanimli olarak TCP 22 portundan çalismaktadir. SSH v1 ve v2 sürümleri vardir. SSHv1 sürümü kolay kirilabilir oldugu için v2'nin kullanimi önerilmektedir ve birçok sistem yöneticisi SSH sunucularinin v1 konusmasini engellemektedir.
SSH uzaktan UNIX yönetme disinda SCP ve SFTP alt hizmetlerine de sahiptir. Bu sekilde SCP veya SFTP araçlarini kullanarak ayni TCP 22 numarali port üzerinden sistemler arasi güvenli dosya alisverisi de yapilabilmektedir. Hemen hemen tüm UNIX sistemlerinde bulunmaktadir. Windows üstünde OpenSSH sunucu yazilimi cygwin ortami ile derlenip çalistirilabilmektedir. (WinSCP gibiWinSCP indir)
SSH ayni zamanda mevcut güvenli baglantisi üzerinden port yönlendirebilmektedir. Diger bir deyisle bir baska uygulamanin baglantisini kendi üzerinden geçirerek hedef sisteme güvenli bir sekilde ulastirabilmektedir. SSH X11 yönlendirmesi de yapabilmektedir. Yani SSH ile baglanilan uzak UNIX üstündeki grafik tabanli uygulamalari rahatlikla çalistirilabilmektedir. SSH socks proxy’lik yapabilmektedir. Socks proxy özelligi Dynamic Port Forwarding olarak adlandirilmaktadir. SSH ile Linux sistemler arasinda VPN de kurulabilmektedir. SSH gizli / açik anahtar ikilisi (ing. private / public key pair) ile çalisarak kullanici dogrulama da yapabilmektedir. Arzu edilirse SSH özel anahtari bir smartcard donanim üzerinde de saklayip kullanabilmektedir. Özet olarak SSH çok marifetli bir uygulamadir. Kullanimina alisinca güvenlik duvari atlatma, güvenli dosya transferi, socks proxy hizmeti, VPN gibi birçok ihtiyacinizi SSH ile karsilayabilirsiniz.
Windows isletim sistemi üzerinde SSH istemcisi olarak putty, SCP ve SFTP amaciyla da WinSCP kullanilabilir.
Temel kullanimi asagidaki biçimdedir:
Kod $ ssh -l kullanici orneksite.com
orneksite.com sunucu sistemine kullanici kullanicisi ile uzak komut satiri oturumu açar.
Kod $ ssh kullanici@192.168.0.117
192.168.0.117 sunucu sistemine kullanici kullanicisi ile uzak komut satiri oturumu açar.
Kod $ ssh root@192.168.0.117 halt -p
192.168.0.117 sunucu sistemine root kullanicisi ile uzak oturum açar, halt -p komutunu isletir ve komut sonlanir sonlanmaz oturum otomatik olarak kapatilir.
Kod $ scp dosya kullanici@sistem:
kullanici kullanici kimligi ile sistem sunucusuna ssh oturum açar, dosya isimli yerel dosyayi sistem isimli sistemdeki kullanici kullanicisinin ev klasörüne kopyalar. Uzak sistem tanimindan sonra “:” karakteri önemlidir. Unutulmamalidir. Aksi taktirde bildigimiz yerel cp komutu görevi görür.
Kod $ scp dosya kullanici@sistem:/tmp
kullanici kullanici kimligi ile sistem sunucusuna ssh oturum açar, dosya isimli yerel dosyayi sistem isimli sistemdeki /tmp klasörüne kopyalar. Uzak sistem tanimindan sonra “:” karakteri önemlidir. Unutulmamalidir. Aksi taktirde bildigimiz yerel cp komutu görevi görür.
Kod $ scp kullanici@sistem:tmp/dosya .
kullanici kullanici kimligi ile sistem sunucusuna ssh oturumu açar, uzaktaki kullanici kullanicsinin ev klasörü altinda yer alan tmp klasörü altindaki dosta isimli dosyayi yerel sistemde bulundugnuz yere kopyalar. Uzak sistem tanimindan sonra “:” karakteri önemlidir. Unutulmamalidir. Aksi taktirde bildigimiz yerel cp komutu görevi görür.
Kod $ sftp kullanici@sistem
SFTP> pwd
/home/kullanici
SFTP> put dosya
SFTP> exit
kullanici kullanici kimligi ile sistem sunucusuna ssh oturumu açar, yerel bilgisayarda bulunulan yerdeki dosya isimli dosya uzak sisteme transfer edilir. SFTP FTP’ye benzeyen komutlara sahiptir. put ile dosya uzak sisteme transfer edilirken, get ile dosya uzak sistemden indirilir. Daha fazla komut için SFTP komut isteminde help komutunu isletilebilir.
SSH Anahtar Kullanimi
SSH ile klavye etkilesimli (ing. keyboard interactive) oturum açma yöntemi disinda gizli / açik anahtar ikilisi (ing. private / public key pair) kullanilabilmektedir. Özellikle SSH ile erisilecek birkaç sunucu sistem oldugunda her birinin sifresini hatirlamak zor ve zahmetli olmaktadir. Daha pratik bir erisim için SSH anahtar ile erisim yöntemi kullanilabilir. Bunun için gizli ve açik olmak üzere bir anahtar ikilisi olusturmalidir. Açik olani ulasilmak istenen hedef sisteme yerlestirilmeli, gizli olani da üçüncü sahislardan çok iyi bir sekilde korunmalidir. Bu yapilandirma hazir oldugunda tüm sistemlere SSH erisimi yapabilmek için sadece açik anahtarin sifresinin (ing. passphrase) hatirlanmasi yeterli olacak.
SSH anahtar ikilisi olusturma:
SSH anahtar ikilisini olusturmak için ssh ile beraber gelen ssh-keygen araci kullanilmaktadir.
Kod $ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kullanici/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/kullanici/.ssh/id_rsa.
Your public key has been saved in /home/kullanici/.ssh/id_rsa.pub.
The key fingerprint is:
52:eb:1c:ad:4f:76:a4:b6:a3:62:bf:95:0f:87:41:c2 kullanici@sistem
ssh-keygen herhangi bir parametre olmaksizin yukaridaki gibi çalistirildiginda ön tanimli olarak SSHv2 için rsa türünde bir anahtar ikilisi üretmektedir. Yukarida da görüldügü gibi ~/.ssh/id_rsa gizli anahtar, ~/.ssh/id_rsa.pub da bu gizli anahtara iliskin açik anahtaridir. Açik anahtari kaybedilirse üzülmeye gerek yok, gizli anahtarin yardimi ile tekrar olusturulabilmektedir veya daha önce yerlestirildigi sunuculardan bir kopya olarak alinabilir:
Kod $ ssh-keygen -y
Enter file in which the key is (/home/kullanici/.ssh/id_rsa):
Enter passphrase:
ssh-rsa IwAzbAAnHCAAB3NzaCAAIEAzc2EAAAmrp1yABSARj4YkBy
SRlXrybTOCqmhgazNeAoMe4onDqJY0jwScCUXqLxfdTa5h6bnvgds2
tgs9xoJGzvHHq9F4QJ0rUhMYE3x+c0u3WZf2sc2badiO59S+Eeyz9y
82u9Hs6CbqMeYRiQUoPaJei2CB+D55EZMc4+J3edeqhqk=
Gizli anahtardan açik anahtarini elde etmeye yarar. Gizli anahtarin sifresi (ing. passphrase) unutuldugu taktirde gizli anahtari kurtarmanin ve tekrar kullanilabilir yapmanin yolu yoktur. Böyle bir durumda yeni bir anahtar ikilisi olusturulmali ve hedef sistemlere yeni açik anahtari uygun sekilde dagitilmalidir.
Anahatar ikilisi hazir. Peki ya simdi? Simdi sira açik anahtarinin ilgili sistemlere yerlestirilmesinde. Hedef sisteme bir defaya mahsus klavye etkilesimli erisim yapilmalidir. SSH ile uzak erisim gerçeklestiginde
Kod $ vi ~/.ssh/authorized_keys
~/.ssh/authorized_keys adinda bir dosya editörle açilmali ve yeni bir satir olusturularak tek satir halinde SSH açik anahtari bu satira yapistirilmalidir. authorized_keys dosyasina yeni açik anahtari tek satir olarak eklendikten sonra kaydedilerek sisteme olan erisim kesilebilir. Ayni sisteme ayni kullanici adi ile bir sonraki erisimde kullanici adina iliskin sifre yerine size ait olan gizli anahtarin sifresi sorulacaktir. SSH ile erismek istediginiz uzak sistemdeki ilgili kullanicilarin ev dizinleri altina ~/.ssh/authorized_keys adinda dosya olusturulmali veya varsa içerisine yeni bir satir olarak gizli anahtara ait olan açik anahtari yapistirilmalidir.
Benzer sekilde kullanilmasi planlanan diger sistemlere de erisim yaparak ~/.ssh/authorized_keys dosyasi ilgili kullanicilar için olusturabilir, dosya varsa da açik anahtari tek satir halinde girilerek kaydedilebilir. Önemli olan açik anahtarinin tek satir halinde girilmesidir. Tek satirlik yapisi bozuldugu taktirde SSH anahtar ile erisim yöntemi çalismayacaktir.
SSH gizli anahtarinin sifresi degistirilmek istendiginde
Kod $ ssh-keygen -p
komutu kullanilabilir. Eski sifre bir kere, yeni sifre de iki kere sorulacaktir. Bu islemden sonra yeni sifre geçerli olacaktir.
SSH Ajani Kullanimi
Her sisteme erisim yapilmak istendiginde gizli anahtarin sifresini pespese girmek, scp ile her dosya kopyalama girisiminde gizli anahtarin sifresini girmek bir süre sonra yorucu olmaktadir. Tüm bu zahmetlerin üstesinden gelmek ve kullanim konforu saglamak için OpenSSH’i tasarlayanlar SSH Agent denen bir uygulama tasarlamislar. SSH ajani yardimi ile gizli anahtarin sifresi girilerek SSH ajaninin bellegine yüklenmekte ve bundan sonraki ssh erisimlerinde sifre bir daha sorulmamaktadir. Sistem kapatildiginda, yeniden baslatildiginda veya SSH ajaninin belleginden gizli anahtar silindiginde gizli anahtarin sifresi tekrar sorulacaktir.
Gizli anahtarin SSH ajani bellegine yüklenmesi
Kod $ ssh-add
Enter passphrase for /home/kullanici/.ssh/id_rsa:
Identity added: /home/kullanici/.ssh/id_rsa (/home/kullanici/.ssh/id_rsa)
Bu asamadan sonra yapilan ssh erisimlerinde hedef sistem ve kullanici hesabinda ssh açik anahtariniz varsa gizli ahantarinizin sifresi sorulmadan erisim yapilabilecektir.
Kod $ ssh kullanici@sistem
kullanici@sistem$
SSH ajani belleginden gizli anahtarin silinmesi
Kod $ ssh-add -D
SSH Ajani bellegine alinmis olan tüm gizli anahtarlar “ssh-add -D” ile silinmektedir. Bilgisayarin basindan ayrilacaginiz zaman SSH ajaninin belleginin silinmesi güvenlik açisindan yararli bir davranis olacaktir.
ssh-add ile yapilabilecek diger seyler için kullanim kilavuzunu okumaniz önerilir.
Simdi SSH ajani sayesinde yapilabilen bir baska senaryodan bahsetmek istiyorum.
Bir baska bilgisayarin basinda oturuyorsunuz. Sizden sunucularin birisinde bir is yapmaniz isteniyor. Ancak bilgisayariniz sizden çok uzakta. Bu durumda bilgisayariniza ssh ile eriserek, bilgisayarinizda yer alan gizli anahtarinizi basinda oturmakta oldugunuz bilgisayarin SSH ajanina yükleyebilir, basinda oturdugunuz bilgisayardan ssh açik anahtarinizin yer aldigi tüm sistemlere ayni sekilde sifresiz olarak erisebilirsiniz.
Kod yabancimasaustu$ ssh -A kullanici@benimmasaustu
kullanici@benimmasaustu$ ssh-add
Enter passphrase for /home/kullanici/.ssh/id_rsa:
Identity added: /home/kullanici/.ssh/id_rsa (/home/kullanici/.ssh/id_rsa)
kullanici@benimmasaustu$ exit
yabancimasaustu$ ssh kullanici@sistem
kullanici@sistem$
Bu kadar basit. SSH gizli anahtariniz yaninizda degil, ancak erisilebilir ise eliniz kolunuz bagli degil, bilhakis SSH ajani sayesinde özgürlügünüze özgürlük kattiniz. Burada önemli olan kendi bilgisayariniza erisim yaparken SSH Agent forwarding parametresi olan “-A” parametresinin unutulmamasidir. SSH erisimlerinizde “-A” parametresini kullanmayi aliskanlik haline getirirseniz erismis oldugunuz sistemden diger sistemlere de sifresiz bir sekilde atlama yapabilirsiniz.
Peki ya Windows kullanicilari? Onlar da OpenSSH ile tamamen uyumlu çalisan Putty Agent’i kullanabilirler. SSH Agent forwarding parametresini SSH seçeneklerinden açmayi da unutmamalari gerekmekte.
SSH Yerel Port Yönlendirme
SSH Yerel Port Yönlendirmesini (ing. Local Port Forwarding) iyi bir sekilde tarif edebilmek için hemen gerçek hayat senaryosu yaziyorum.
Ag Kurgusu: Evinizde iki adet bilgisayar sistemi var. ADSL modeminizin Internet’e bakan yüzünde sadece 22 numarali SSH portu içteki Linux bilgisayarinizin 22 numarali portuna yönlendirilmis durumda. Yani herhangi bir yerden evinizdeki Linux’ünüze SSH ile erisebiliyorsunuz. Sadece bu SSH baglantisi sayesinde eviniz agindaki diger tüm kaynaklara, bilgisayarlara SSH Yerel Port Yönlendirme ile erisim saglanabilmektedir. Hatta diger baglantilar SSH’in saglamis oldugu sifreli baglanti üzerinden tünellenerek iletilecegi için daha güvenli erisim imkaniniz olmus olacak.
Senaryo 1: Evinizde 192.168.32.18 IP adresli bir Windows var. Evinizdeki Linux’e SSH ile eriserek 192.168.32.18 IP adresli windows’a rdesktop erisimi yapmak istiyorsunuz. Önce bir uçbirimden (ing. terminal) yerel port yönlendirmesi ayarli SSH baglantisi gerçeklestirilir.
Kod
Bu asamadan itibaren basinda oturmakta oldugunuz bilgisayarin 127.0.0.1:3389 numarali portu ssh istemcisi tarafindan dinlenmeye baslamakta. Mevcut baglantiyi kesmeden, basinda oturmakta oldugunuz bilgisayarin bir baska uçbiriminden asagidaki komutu verdiginizde
Kod $ rdesktop 127.0.0.1:3389
Karsinizda evinizdeki 192.168.32.18 IP adresli Windows’un rdesktop ekrani belirecek. Güvenle kullanabilirsiniz.
Biraz daha açiklamak gerekirse ssh istemcisinin yerel port yönlendirme seçenegi var (-L). Bu seçenegin kullanilmasi zorunlu olan bir parametresi var. Bu parametre de aslinda birbirinden “:” ile ayrilmis zorunlu 3 parçali veya seçimlik olarak 4 parçali dinlenecek ip ve port, baglanilacak ip ve port bilgilerinden olusmaktadir. Asagida “[]” arasina alinmis olan parça seçimliktir. Belirtilmezse 127.0.0.1 oldugu farz edilmektedir.
Kod -L [yereldinlemeip:]yereldinlemeport:uzakbaglantiip:uzakbaglantiport
Yukarida kullanim biçimi tarif edilen yerel port yönlendirme seçeneginde kirmizi ile isaretlenmis kisim ssh istemcisinin dinleyecegi IP:PORT bilgisini, mavi ile isaretlenmis kisim da baglanti kurulan SSH sunucusunun bizim için baglanacagi IP:PORT bilgisini ifade etmektedir. Kirmizi ile isaretli alanda ssh istemcisini çalistirdigimiz bilgisayarda var olan IP adreslerinden birisini ve bosta olan portlardan birisini yazmaliyiz. Mavi ile isaretli alanda ise SSH ile erisecegimiz sunucunun baglanabilecegi bir IP adresi ve portunu yazmaliyiz. SSH oturumu açildiginda ssh istemcisi kirmizi isaretli alanda tanimli IP adresi ve portundan dinlemeye baslayacaktir (”netstat -nltp” ile dinlenen TCP portlari ve dinleyen süreçler listelenebilir, kirmizi ile belirtilmis olan portu ssh sürecinin dinliyor olmasi beklenir). Bu IP adresi ve portuna bir baglanti geldiginde mevcut SSH oturumu baglantisi üstünden karsi taraftaki SSH sunucusuna kadar gidecek ve oradan da mavi ile isaretli alandaki IP adresine ve portuna baglanacaktir.
“-L” seçeneklerinden istediginiz kadar kullanmakta özgürsünüz. Yani tek bir SSH baglantisi ile birden fazla port yönlendirme gerçeklestirebilirsiniz. Örnek için Senaryo 2'yi takip ediniz.
Senaryo 2: Ayni windows bilgisayariniza rdesktop ile erisirken, diger yandan smbmount ile evdeki paylasimi, basinda oturdugunuz bilgisayarin dosya sistemine baglamak istiyorsunuz. Ancak basinda oturdugunuz bilgisayarin 139 numarali portu samba çalistigi için mesgul…
Kod $ ssh -L 0.0.0.0:3389:192.168.32.18:3389 -L 10139:192.168.32.18:139 kullanici@ev.homeip.net
Yukaridaki örnekte iki adet “-L” seçenegi ayni anda kullanilmis. Ilki rdesktop yerel port yönlendirmesi iken, ikincisi de SMB port yönlendirmesi. Ancak basinda oturdugumuz bilgisayarin 139 numarali portu dolu oldugu için maalesef standart disi baska bir port olarak 10139'dan dinlemesi gerektigini belirtmis oluyoruz. Ilk “-L” seçeneginin parametresi 4 parçali bir örnek olup, ilk parçanin 0.0.0.0 IP adresi olduguna dikkat ediniz. Yani basinda oturdugumuz bilgisayarin tüm IP adreslerinden 3389 numarali port ssh istemcisi tarafindan dinleniyor olacak. Yani bulundugumuz ortamdaki diger bilgisayarlar, basinda bulundugumuz bilgisayara rdesktop baglantisi kurarlarsa kendilerini evimizdeki 192.168.32.18 IP adresli windows bilgisayarimiza erismis bulacaklar. Tam bir matrix. ;-)
Gelelim diger bir uçbirimden evimizdeki 192.168.32.18 IP adresli Windows’un paylasiminin basinda bulundugumuz bilgisayarin dosya sistemine baglanmasina. Bir baska uçbirimden root kullanicisi olarak:
Kod # mount -t cifs -o ip=127.0.0.1,port=10139,user=Administrator //evdekiwindows/c$ /mnt
Password:
#
Yukaridaki gibi bir mount komutu girdigimizde 127.0.0.1'in 10139 portuna baglanmasini, kullanici olarak kendisini Administrator olarak tanitmasini ve //evdekiwindows/c$ ön tanimli paylasimini /mnt altina baglamasi emrini vermis oluyoruz.
SSH’in port yönlendirme özelliklerinden bol bol yararlandim ve çok saglam çalisan bir yapi. Bu yöntemle MegaByte’lar aktardim. SSH’in sikistirma seçenegi de kullanilarak giden gelen trafigin daha az miktarda olmasi ve aktarim performansinin yüksek olmasi da saglanabilmektedir.
Ayni yerel port yönlendirme özelligi Putty’de de bulunmaktadir. Putty ile baglanti kurmadan önce SSH Seçeneklerinden ayni ayarlar yapilabilmektedir. Böylece basinda bulundugunuz bilgisayar Windows da olsa SSH yerel port yönlendirme Putty ile ayni sekilde çalismaktadir.
SSH Uzak Port Yönlendirme
SSH Uzak Port Yönlendirme (ing. Remote Port Forwarding), Yerel Port Yönlendirme’ye oldukça benzemektedir. Tek fark yerel olanda ssh istemcisi port dinlemekte sshd istedigimiz yere baglanmaktayken, uzak olanda ssh istemcisi istedigimiz yere baglanmakta oturum açtigimiz yerdeki sshd istedigimiz portu dinlemektedir. Kulaga biraz karisik geliyor. Birkaç pratik yapmadan da kafaya kalici olarak yerlesmesi mümkün degil. Bu nedenle ayni SSH Yerel Port Yönlendirme‘de oldugu gibi senaryolarla tariflemeye çalisacagim.
Ag Kurgusu: Evinizde bir adet Linux sistemi var ve üzerinde çalismaktasiniz. ADSL modeminizin Internet’e bakan yüzünde sadece 22 numarali SSH portu içteki bu Linux bilgisayarinizin 22 numarali portuna yönlendirilmis durumda. Yani herhangi bir yerden evinizdeki Linux’ünüze SSH ile erisilebilmektedir. Diger yandan is yerinize dogrudan erisiminiz yok. Bu sirada izinli oldugunuz için evinizdesiniz. Is yerindeki mesai arkadasiniz sizi aradi ve sizin yetkili oldugunuz 192.168.17.13 IP adresli sunucu sisteminde acil bir çalisma yapmaniz gerektigini iletti. Elde avuçta sadece bir baglanti yöntemi var, o da is yerinizden evinizdeki OpenSSH sunucusuna 22 numarali porttan erisim imkani.
Senaryo: Basinda çalismakta oldugunuz evinizdeki Linux’ün üstünde, mesai arkadasinizin SSH oturumu açabilecegi bir kullanici hesabi tanimlamalisiniz. Daha sonra da mesai arkadasinizdan kendi bilgisayarindan asagidaki komutla sizin Linux’ünüze SSH oturumu açmasini istemelisiniz…
Kod
Bu asamadan itibaren kendi evinizde basinda oturmakta oldugunuz Linux sistemi üzerinde 2222 numarali TCP portu mesai arkadasiniza hizmet veren sshd tarafindan dinlenmeye baslamakta. Artik kendi Linux’ünüzden asagidaki komutla is yerinizdeki 192.168.17.13 IP adresli sunucu sisteme SSH baglantisi kurabilir ve üzerinde çalisabilirsiniz, yeter ki mesai arkadasiniz ilgili SSH oturumunu sonlandirmasin.
Kod evlinux$ ssh -p 2222 root@localhost
Password:
Sirketin 192.168.17.13 Sunucusuna Hosgeldiniz!
sunucu#
Yukaridaki örnekte de görüldügü gibi artik çalisma yapmaniz gereken sunucudasiniz.
Biraz daha açiklamak gerekirse ssh istemcisinin uzak port yönlendirme seçenegi var (-R). Bu seçenegin kullanilmasi zorunlu olan bir parametresi var. Bu parametre de aslinda birbirinden “:” ile ayrilmis zorunlu 3 parçali veya seçimlik olarak 4 parçali dinlenecek ip ve port, baglanilacak ip ve port bilgilerinden olusmaktadir. Asagida “[]” arasina alinmis olan parça seçimliktir. Belirtilmezse 127.0.0.1 oldugu farz edilmektedir.
-R [uzakdinlemeip:]uzakdinlemeport:yerelbaglantiip:yerelbaglantiport
Yukarida kullanim biçimi tarif edilen uzak port yönlendirme seçeneginde kirmizi ile isaretlenmis kisim SSH oturumu açilan sshd sunucusunun dinleyecegi IP:PORT bilgisini, mavi ile isaretlenmis kisim da baglantiyi kuran SSH istemcisinin bizim için baglanacagi IP:PORT bilgisini ifade etmektedir. Kirmizi ile isaretli alanda SSH oturumu açilan sshd’nin çalistigi bilgisayarda var olan IP adreslerinden birisini ve bosta olan portlardan birisini yazmaliyiz. Mavi ile isaretli alanda ise SSH erisimini gerçeklestirdigmiz SSH istemci sistemin baglanabilecegi bir IP adresi ve portunu yazmaliyiz. SSH oturumu açildiginda uzaktaki sshd sunucusu kirmizi isaretli alanda tanimli IP adresi ve portundan dinlemeye baslayacaktir (”netstat -nltp” ile dinlenen TCP portlari ve dinleyen süreçler listelenebilir, kirmizi ile belirtilmis olan portu sshd sürecinin dinliyor olmasi beklenir). Bu IP adresi ve portuna bir baglanti geldiginde mevcut SSH oturumu baglantisi üstünden karsi taraftaki SSH istemcisine kadar gidecek ve oradan da mavi ile isaretli alandaki IP adresine ve portuna baglanacaktir.
“-R” seçeneklerinden istediginiz kadar kullanmakta özgürsünüz. Yani tek bir SSH baglantisi ile birden fazla port yönlendirme gerçeklestirebilirsiniz.
SSH baglantisini kuracak olan kisi Windows kullaniyorsa putty ile benzer sekilde uzak port yönlendirmesi yapabilir. Böylece mesai arkadasinizin bilgisayari Windows da olsa SSH uzak port yönlendirme Putty ile ayni sekilde çalismaktadir.
SSH Dinamik Port Yönlendirme
OpenSSH‘in port yönlendirme becerilerinden bir digeri olan Dinamik Port Yönlendirme (ing. Dynamic Port Forwarding) aslinda bir çesit socks proxy‘dir. Dinamik port yönlendirme’yi daha önce oldugu gibi kurgu ve senaryo ile tarif etmeye çalisacagim.
Buradaki kurgu ve senaryo aslinda Yerel Port Yönlendirme yazisindaki senaryo ile ayni. Yani is yerimizdeyiz, evimizde bizi SSH 22 TCP portundan dinleyen bir linux’ümüz var ve evdeki diger bilgisayarlardan birisine (192.168.32.17 IP adresli bilgisayara) ulasmamiz gerekiyor.
Kod
Yukaridaki gibi bir ssh komutu ile evimizdeki Linux üzerinde açmis oldugumuz oturum açik durdugu sürece, isyerinde basinda oturdugumuz bilgisayardaki SSH istemcisi 127.0.0.1 IP adresindeki 20000 numarali TCP portunu dinler ve Socks Proxy hizmeti verir.
Bu asamadan sonra herhangi bir programi evmizdeki bilgisayarlara baglanmak için kullanamiyoruz. Özellikle Socks Proxy ayari yapilabilen, socks proxy ile konusabilen programlari kullanabiliyoruz. Bunlar arasinda Web Gezginleri (firefox, opera, ie, …), Anlik Mesajlasma yazilimlari (MSN Live Messenger, ICQ, Gtalk, YahooIm, …), IRC yazilimlari, Putty, WinSCP, … Ilgili istemci programi çalistirdiktan sonra baglanti ayarlari kismina socks proxy ayarimizi sunucu 127.0.0.1 port 20000 olarak giriyoruz. Daha sonra da baglanacagimiz adres alanina da evimizdeki IP’leri dogrudan yazabiliriz. Socks Proxy sunucusu görevi yapmakta olan SSH istemcisi kendisine gelen baglanti istemlerini alip, mevcut SSH oturumunuz üzerinden sifreli bir sekilde evinizdeki SSHD’ye kadar götürecek, SSHD de sizin için ilgili IP adresine baglanacaktir.
Linux’teki ssh, telnet gibi standart istemcilerin socks proxy ile konusma yetenekleri bulunmamaktadir. Bir Linux basinda iken en kolay Socks Proxy’li ssh erisimi Putty’nin linux sürümü ile yapilabilmektedir. Illa ki komut satirindan standart OpenSSH istemcisini veya diger socks proxy konusma yetenegi olmayan uygulamalara socks proxy’nizi kullandirmak istiyorsaniz tsocks adindaki paketi önerebilirim. Tsocks’un proxy ayari yapildiktan sonra
Kod $ tsocks ssh 192.168.32.23
$ tsocks wget http://192.168.32.17
biçiminde kullanilmaktadir. Birçok istemci program ile bu sekilde kullandim, yeterince saglam ve saglikli çalismaktadir. Çalisma mantigi da ag uygulamasinin sistem ag islevlerini çagirmasi aninda araya girerek socks proxy ile konusup tünellemesi ve cevaplari da uygulamaya geri iletmesidir.
Putty ayni OpenSSH istemcisi gibi Dinamik Port Yönlendirme’yi deteklemektedir. Böylece Windows kullanicilari da erisebilecekleri bir Linux OpenSSH sunuculari oldugu sürece Windows bilgisayarlarini Putty ile Socks Proxy’ye çevirebilirler.
Kaynak: Sezai Yilmaz - http://www.sezaiyilmaz.com/2008/07/30/ssh-hakkinda-ileri-duzey-ssh/
Windows için açik kaynakli ücretsiz WinSCP yazilimini indir)[/CODE]
|
Yazıcıya Gönder
|
|
|