2 Uzaktan Erişim Uzaktan erişim komutları intranetler gibi daha küçük sistemler için tasarlanmıştır. Sizi başka bir sistemdeki diğer bir hesaba uzaktan erişmeye ve kullanmaya izin verirler. Uzaktan erişim komutlarının çoğu Internet için kullanılan serim (ağ) iletişim olanaklarıyla mukayese edilebilir. Örneğin: rlogin bir sisteme uzaktan giriş yapar. Bu komut telnet komutuna benzerdir. rcp komutu uzaktan dosyaları kopyalar ve bu komut FTP ye benzer fonksiyonlara sahiptir. rwho komutu who komutu ile benzer işlemi görür serimizdeki her sisteme o anda bağlanmış tüm kullanıcıları görüntüler. ruptime seriminizdeki her sistem hakkında bilgiyi gösterir. Bu bilgi her sistemin nasıl çalıştığını gösterir. Bu komutla sistemin açık olup olmadığını, ne kadar süredir açık/ kapalı olduğunu, sistemdeki kullanıcıların sayısı ve son 5-10 ve 15 dakikadır sistemdeki ortalama yükü görüntüler. Örneğin : $ruptime violet up 11+04:10, 8 users,load 1,20 1,10 1,00 2.1 Telnet Bu programın ismi, Telecommunications Network ün kısaltılmasından gelir. Uzaktan sisteme giriş (login) ve virtual terminal kullanma imkanlarını sağlar. Remote sistem ile bağlantı kurarak onu direk kullanma olanağı sağlar. Server da telnet in dahil olduğu işlem, telnet oturumlarından gelen talepleri kabul etmektir. Unix sisteminde bu işlem telnetd deamon unda olur. 2.1.1 Telnet Bağlantıları Telnet protokolü, network virtual terminal (NVT) mantığını kullanır. Bağlantının her ucu mantıksal bir klavye ve yazıcıya sahiptir. Mantıksal yazıcı terminal ekranıdır ve karakterleri gösterirken, mantıksal klavye kullanıcı klavyesidir ve karakterleri oluşturur. Telnet protokolü iki ucu NVT gibi görür. Burada giriş yapılan makine client görevindedir ve telnet çekilen makine server görevindedir. telnetd daemonu arka planda calışarak bunların arasında çevirmen görevi yapar. Telnet bağlantısı; $telnet makinenin_ip_adresi veya makinenin_adı(dns e bağlı) ile sağlanır. Ayrıca port numaraları bilinen bazı servislerle bağlantı kurulabilir. Eğer alıcı ve gönderen makinede graphical user interface(gui), Motif veya X varsa karakter tabanlı arayüz yerine her iki ucun da lokal terminali windowing için kullanmasını isteyebiliriz. Yani bağlandığımız makineye ait grafiksel arayüzü (Menüler, pencere ve gra
fikler v.s) kendi ekranımızda görmek isteyebiliriz. Bağlandığımız makinenin X uygulamalarını kendi lokal makinemizde calıştırmak için: $xhost +remote_makinenin_ip adresi yapmalıyız. Bu işlem, bağlandığımız makinadan grafiksel arayüze ait bilgilerin bizim makinamız tarafından alınma izinlerini verir. Bu izinler olmadan telnet ile bağlantıyı gerçekleştirsek bile grafiksel arayüze ulaşamayız. Daha sonra telnet yapılır. Eğer bu olanak kesilmek isteniyorsa remote makine kapatıldıktan sonra; $xhost -remote_makinenin_ip_adresi ile izinler kaldırılabilir. 2.1.2 Telnet Komutları Bunlar protokolun kullanımı için gerekli komutlardır. Komut satırına telnet yazıp enter tuşuna basıldıktan sonra? komutu ile görülebilir : close close current connection display display operating parameters mode try to enter line or character mode ('mode?' for more) open connect to a site quit exit telnet send transmit special characters ('send?' for more) set set operating parameters ('set?' for more) unset unset operating parameters ('unset?' for more) status print status information toggle toggle operating parameters ('toggle?' for more) b change state of special charaters ('slc?' for more) z suspend telnet! invoke a subshell environ change environment variables ('environ?' for more)? print help information örneğin : $telnet telnet> open remote_makinenin_ip_adresi yazarakda telnet bağlantısı sağlanabilir. 2.2 FTP (File Transfer Protocol) FTP (file transfer protocol), bir makinadan diğerine yapılan dosya transferinde en çok kullanılan yollardan biridir. İnternet desteği olan işletim sistemlerinin hepsinde (MS-DOS, Windows, OS/2... ) ftp, standart program olarak kullanıcıların hizmetine sunulmuş durumdadır. Linux altında da ftp desteği vardır. FTP, dosyaları alabilmenizle birlikte istediğiniz adrese yollamanıza da izin verir. Eğer İnternet'e bağlıysanız ve Linux kullanıyorsanız, ftp vazgeçemeyeceğiniz bir program olacaktır.
2.2.1 Temel FTP Komutları FTP, İnternet'e bağlı olan makinalarda anlam kazanır ve gücünü hissettirir. Saniyeler içinde onlarca dosya, yüzlerce kilobayt bilgi transfer edilebilir. FTP'ye başlamak için kullanabileceğiniz iki komut var. Birisi, standart ftp paketinden çıkan 'ftp' komutu, diğeri de 'ncftp' komutu. İkisinin de avantajları olmasına rağmen 'ncftp' nin kullanıcıya yönelik kullanım kolaylığı vardır, bu nedenle sizde 'ncftp' kullanın. Bir FTP adresine bağlanmak için o adresin IP numarasını veya ismini bilmeniz yeterli. Örnek olarak çok geniş bir Linux arşivi olan linux.org.tr adresine bağlanmak için: $ ftp linux.org.tr yazın. Ekranda aşağıdaki gibi bir görüntü gelecektir. ncftp, ftp yapmak için gerekli olan kullanıcı kodunu ve şifreyi kendisi gönderir ve otomatik olarak karşıdaki adrese bağlanır. Eğer ftp kullanıyor olsaydınız, kullanıcı kodu için anonymous veya ftp, şifre için de e-posta adresini girmeniz gerekecekti. linux:~$ ftp linux.org.tr Connected to linux.org.tr. 220 metu FTP server (Version wu-2.4(1) Tue Aug 8 15:50:43 CDT 1996) ready. Name (linux.org.tr:root): ftp 331 Guest login ok, send your complete e-mail address as password. Password: 230-Welcome, archive user! This is an experimental FTP server. If have any 230-unusual problems, please report them via e-mail to root@metu 230-If you do have problems, please try using a dash (-) as the first character 230-of your password -- this will turn off the continuation messages that may 230-be confusing your ftp client. 230-230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> Karşıdaki makinaya bağlandık ve önümüze bir komut satırı çıktı. Bu komut satırında kullanılabilecek ftp komutlarının listesini görmek için ftp> help yazın. Bir komut hakkında daha ayrıntılı bilgi elde etmek için ise 'help' komutunun hemen ardından ftp komutunu getirebilirsiniz. Şimdi patika ismini bildiğimiz bir dosyayı kendi hesabımıza çekelim. Öncelikle nerede olduğumuzu görelim. Bunun için Linux komutunun benzeri olan ls veya dir komutunu kullanın. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 9 drwxrwxr-x 8 root wheel 1024 Jan 7 1980. drwxrwxr-x 8 root wheel 1024 Jan 7 1980.. drwxrwxr-x 2 root wheel 1024 Jan 7 1980 bin drwxrwxr-x 2 root wheel 1024 Jan 7 1980 etc drwxrwxr-x 2 root wheel 1024 Dec 3 1993 incoming drwxrwxr-x 2 root wheel 1024 Nov 17 1993 lib drwxrwxr-x 12 root wheel 1024 Feb 14 08:08 pub drwxrwxr-x 3 root wheel 1024 Jan 7 1980 usr -rw-r--r-- 1 root root 312 Aug 1 1994 welcome.msg 226 Transfer complete.
Bir ftp adresine bağlandıktan sonra genelde her adreste yeralan pub, incoming, bin gibi dizinler göreceksiniz. Bunlardan şu an için işimize yarayanı pub dizini olacaktır. Bir dizine girmek için yine bir UNIX komutu olan 'cd' ve ardından 'pub' yazın. ftp> cd pub Şimdi `pub' dizini altındayız. Genellikle her türlü program, uygulama yazılımı, ağ uygulamaları ve çeşitli dosyalar bu dizin altında bulunur. Burada hangi dosya ve dizinler olduğunu görelim. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 12 drwxrwxr-x 12 root wheel 1024 Feb 14 08:08. drwxrwxr-x 8 root wheel 1024 Jan 7 1980.. drwxr-xr-x 2 root root 1024 Feb 14 08:07 X drwxr-xr-x 2 root root 1024 Feb 14 08:07 applications drwxr-xr-x 2 root root 1024 Feb 14 08:07 development drwxr-xr-x 2 root root 1024 Feb 14 08:08 distributions drwxr-xr-x 2 root root 1024 Feb 14 08:07 docs drwxr-xr-x 2 root root 1024 Feb 14 08:07 games drwxr-xr-x 2 root root 1024 Feb 14 08:07 graphics drwxr-xr-x 2 root root 1024 Feb 14 08:09 kernel drwxr-xr-x 2 root root 1024 Feb 14 08:07 network drwxr-xr-x 2 root root 1024 Feb 14 08:07 sunsite 226 Transfer complete. ftp> Örneğin 'kernel' dizini altında yer alan bir çekirdek dosyasını kendi makinemize alalım. ftp> cd kernel 250 CWD command successful. Dosyaların transferi için iki farklı transfer türü mevcuttur. 1) ASCII 2) binary Ftp protokolünde, dosyaların bir makineden diğerine taşınması esnasında dosyanın çalıştırılabilir (arşivler, sıkıştırılmış dosyalar ve diğerleri) veya metin dosyası olması hayati önem taşır. İnternet üzerinde, zamandan tasarruf amacıyla tüm dosyalar ASCII formatta taşınırlar. Çalıştırılabilir dosyalar 8 bitlik karakterlerden oluştuğu için bunları indirebilmek için taşıma işleminin 8 bit halinde yapılması gerekir. Mevcut transfer türünün hangisi olduğunu görmek için type komutu kullanılır. ftp> type using binary mode to transfer files. ftp> ascii 200 Type set to A Uzaktaki sunucudan bir dosyanın bilgisayarınıza bağlantını almak için get komutu kullanılır tersine kopyasını koymak için ise put komutu kullanılır. Çok sayıda dosya kopyalanması durumunda myget veya mget* myput veya mput* (tüm dosyalar)
bağlantısının kesilmesi ve yeniden bağlanılması durumunda reget komutu kullanılır. Dosya silinmesi için delete, eğer çok sayıda ise mdelete komutu kullanılır. macdef komutu ile ftp için bir makro tanımlayabiliriz. ftp> macdef kopya Bu komuttan sonra aşağıdaki gibi macro komutlarını satır satır girerek nihayet makroyu boş bir satırla sona erdiririz. cd.. ls -l <enter> Komut satırından normal bir komut yerine bir makroyu çalıştırmak istediğimizde başına $ sembolü koyarız. Örneğin yukarıdaki kopya makrosunu çalıştırmak için ftp> $kopya şeklinde makro adını gireriz. Dosyayı indirmeden önce, kontrol edilmesi gereken bir şeyde dosyanın indirileceği yerel dizinini belirtmektir. Burada linux-1.3.56.tar.gz programını 'kernel' dizininin altına çekelim. Bunun için lcd komutunu kullanalım. ftp> lcd /root/kernel Local directory now /root/kernel Artık istediğimiz dosyayı indirebiliriz. Dosyaları almak için get komutu kullanılır. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 5838 drwxr-xr-x 2 root root 1024 Feb 14 08:09. drwxrwxr-x 12 root wheel 1024 Feb 14 08:08.. -rw-r--r-- 1 root root 5951488 Feb 14 08:10 linux-1.3.56.tar.gz 226 Transfer complete. ftp> get linux-1.3.56.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-1.3.56.tar.gz (5951488 bytes). 226 Transfer complete. 5951488 bytes received in 26 secs (2.2e+02 Kbytes/sec) 26 saniye içinde yaklaşık 6 MB büyüklüğündeki dosyayı çektik. Sizin İnternet'e bağlantı hızınıza bağlı olarak dosyayı yerel diske yazma süresinde değişiklikler olabilir. Yukarıdaki işlemleri istediğiniz kadar tekrar edip gereken dosyaları çektikten sonra ftp'den çıkmak için ftp> quit 221 Goodbye. komutunu kullanın. Sunucu makinayla bağlantınız kesilecek ve kabuk komut satırına geri döneceksiniz. Birden fazla dosya çekmek veya göndermek için, komutların başına m getirilir. Örneğin :
ftp> mget ker* komutu, ker ile başlayan tüm dosyaları çekmek için kullanılır. 2.3 FTP Sunucusu FTP protokolü TCP paketleri kullanarak sunucu istemci mimarisinde çalışan bir uygulamadır. FTP sunucuları 20 ve 21 nolu portları dinleyerek hizmet verirler. 21. port kontrol kanalı olarak adlandırılır ve istemci tarafından FTP sunucusuna gönderilen tüm komutlar sunucunun 21. portuna gönderilir. 20. port ise veri kanalı olarak adlandırılır ve istemciden sunucuya yada sunucudan istemciye gönderilecek veriler sunucunun 20. portunu kullanır. FTP sunucuları bağlantı şekillerine göre ikiye ayırabiliriz; Aktif FTP sunucu bağlantısı Pasif FTP sunucu bağlantısı Aktif FTP Bağlantı Aşamaları; İstemciniz FTP sunucusuna FTP kontrol portu olan 21. portundan bağlanır. ls, get gibi komutlarınız bu bağlantı üzerinden gider.
İstemci kontrol portu üzerinden yolladığı komutla sunucudan kendisine doğru veri transer etmek isterse veri sunucunun 20. portundan istemcinin 1024'den daha yukarıdaki portlarından birine yapılacak olan bir bağlantıyla sağlanır. ls komutu çıktısı gibi verilerde, veri transfer edilen (20. portu kullanan) bağlantı üzerinden istemciye ulaşır. Aktif ftp bağlantısı istemcinin NAT arkasında bulunduğu durumlarda gerekli yönlendirmeler yapılmamışsa problem yaratabilir. Pasif FTP Bağlantı Aşamaları; İstemciniz FTP sunucusunun kontrol portu olan 21. portuna bağlanır. Komutlarınız bu bağlantı üzerinden sunucuya gider. İstemci ne zaman veri transferi isteğinde bulunsa istemci 1024'ten yüksek bir portu kaynak port olacak şekilde hedef portu sunucunun 1024'ten yüksek bir portu olacak şekilde bağlantı kurar ve veri transferini bu bağlantı üzerinden gerçekleştirir. Pasif FTP bağlantıları sırasında sunucu istemciye doğru herhangi bir bağlantı kurma çabasına girmez. İstemci veri gönderirken de alırken de her zaman gereken bağlantıları kurar. Firewall veya NAT arkasındaki istemcileri için pasif bağlantı şekli daha iyi çalışacaktır. Linux üzerinde kullanılan bir çok ftp sunucusu mevcuttur; Pure-ftpd Vsftpd Proftpd Wu-ftpd... Vsftpd Vsftpd (Very Secure FTP) yaygın olarak kullanılan ve konfigürasyonu oldukça basit bir ftp sunucusudur. Genellikle xinetd daemon u tarafından kontrol edilmektedir. Eğer sisteminizde vsftpd yüklüyse; Sunucuyu başlatmak için /etc/xinetd.d/vsftpd dosyası içerisindeki disable satırının değerini no olarak değiştirmek gerekmektedir. service ftp { } socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/vsftpd server_args = log_on_success += DURATION USERID log_on_failure += USERID nice = 10 disable = yes/no
ardından $ /etc/init.d/xinetd restart komutuyla xinetd deamon unu yeniden başlatarak ftp sunucunuzu açmış olursunuz. Anonymous kullanıcıların öntanımlı olarak ulaşacakları dizin sistemde lokal olarak tanımlanmış olan ftp kullanıcısının ev dizinidir. ftp:x:40:49:ftp account:/disk/suse93iso:/bin/bash Vsftp sunucusunun konfigürasyon dosyası /etc/vsftpd.conf dosyasıdır. Bu dosya içerisindeki konfigürasyonla ilgili bazı önemli parametreler aşağıda açıklanmıştır. Ftp sunucunuza girildiğindeki görünmesini istediğiniz hoş geldiniz mesajı ftpd_banner parametresiyle değiştirilebilir ftpd_banner="welcome to FOOBAR FTP service." Ftp sunucunuza anonymous kullanıcıların yanında sunucuda tanımlı olan lokal kullanıcıların da ev dizinlerine şifreleri ile ulaşmasını istediğinizde local_enable parametresini YES olarak ayarlamalısınız. local_enable=yes Sunucunuza ev dizinlerine ulaşmak için giren lokal kullanıcıların ev dizinlerinden daha üst dizinlere çıkmasını engellemek isterseniz chroot_local_user parametresi YES olarak ayarlanmalıdır. chroot_local_user=yes Ev dizinine hapsetmek istediğiniz kullanıcıları liste halinde tutmak istiyorsanız chroot_list_enable parametresini YES olarak ayarlayıp ardından kullanıcı listenizi chroot_list_file parametresi ile belirtmelisiniz. chroot_list_enable=yes chroot_list_file=/etc/vsftpd.chroot_list Sunucunuza bağlanan kullanıcılarınızın veri transfer hızını sınırlamak isterseniz local_max_rate parametresini byte/sn cinsinden belirlemelisiniz. Öntanımlı değer 0 yani sınırsızdır. local_max_rate=7200 Anonymous bağlantıya izin vermek istediğinizde anonymous_enable seçeneğinin YES olarak ayarlanması gerekmektedir. anonymous_enable=yes
Kullanıcının sunucuyla bağlantısının kesilmesine sebep olacak hareketsiz kalma süresi idle_session_timeout parametresi ile saniye cinsinden belirtilir idle_session_timeout=600 Veri transferinde kesinti olduğunda ne kadar süre bğlantı yapma denemelerinin devam edeceği data_connection_timeout parametresi ile saniye cinsinden belirtilir data_connection_timeout=120 2.4 Uzaktan erişim izni :.rhosts.rhosts dosyasını kullanarak TCP/IP komutları kullanan kullanıcılar tarafından hesabınıza erişimi kontrol edebilirsiniz. Kullanıcılar.rhosts dosyasını standard bir editör (örneğin vi veya emacs) kullanarak kendi hesaplarında oluştururlar. Bu dosya kullanıcının ev dizininde olmalıdır. Aşağıdaki örneklerde kullanıcı bir.rhosts dosyasının içeriğini görüntülemiştir. $ cat.rhosts garnet serdar violet mehmet.rhosts dosyası aracılığı ile diğer insanlara şifrenizi vermeksizin hesabınıza erişme iznini basit bir şekilde verebilirsiniz. Bir kullanıcıya erişimi engellemek için, basitçe.rhosts dosyanızdan sistemin ismini ve kullanıcının login-name ini silmeniz yeterlidir. Bu tip bir erişim çalışmak için ve uzaktan login işlemleri için gerekli değildir, daha ziyade uzaktan dosya kopyalanması, linux komutlarının uzaktan çalıştırılması gibi diğer uzaktan erişim komutları için gereklidir. Uzaktaki bir sistemde böyle komutları çalıştırmak istiyorsanız bu hesap sizin login name inize ve sistem isminize.rhosts dosyasında gereksinim duyar..rhosts un temin ettiği erişim türü, size diğer hesaplara doğrudan erişmek için TCP/IP komutlarını kullanmanıza izin verir. Bu hesaplara ilk olarak girmek zorunda değilsiniz. Gerçekte diğer sistemlerdeki hesaplarınızı o anda kullandığınız hesabınızın bir uzantısıymış gibi kullanabilirsiniz. rcp komutuyla herhangi bir dosyayı bir klasörden diğerine hangi sistem üzerinde olursa olsunlar kopyalayabilirsiniz. rsh komutu ile herhangi bir linux komutunu hesabınızın olduğu diğer uzak hesaplarınızda çalıştırabilirsiniz. Bu komutların genel yapıları aşağıdaki gibidir : $ rlogin sys-name -l login-name Eğer diğer sistemdeki login-name iniz farklı ise -l opsiyonu ile ona girebilirsiniz. Sisteme girdiğinizde istediğiniz herhangi bir komutu çalıştırabilirsiniz. Çıkmak için exit, CTRL-D, ~. veya logout (TCSH veya C-shell de) komutları kullanılır. $ rcp remote-system-name:source-file copy-file bu komutu kullanabilmek için uzak sistemin.rhosts dosyasında sizin local sisteminiz ve login name iniz olmalı. Örneğin: $ rcp violet:wednesday today
Wednesday dosyası violet uzak sisteminden kendi sistemine today adı ile kopyalandı. $ rcp -r letters violet:oldnotes letters klasörü, uzak sistem violet de oldnotes klasörü olarak kopyalanır $ rsh remote-system-name linux-command Bu komut içinde.rhosts dosyası gereksinimi vardır. Aşağıdaki örnek de uzak sistem violet de ls komutu çalıştırılır ve violet de /home/robert klasöründe dosyaları listeler $ rsh violet ls /home/robert Bu örnek te uzak sistemdeki dosyaları listeler ve onları local sistemdeki standart çıktıya yollar. $ rsh violet ls /home/robert > myfiles Eğer özel kota işareti kullanılırsa bu artık uzak sistemde değerlendirilen linux komutunun bir parçası olur. Örneğin: $ rsh violet ls /home/robert > myfiles ls komutu dosya isimlerinin listesini üretir ve uzak sistemdeki myfiles isimli bir dosyaya yönlendirir. Aynı şey borular içinde geçerlidir örneğin aşağıdaki 1.örnekte dosya listesi local printer a yönlendirilirken 2.örnekte standart çıktı uzaktaki sistemin printer ına yönlendirilmiştir. $ rsh violet ls /home/robert lpr $ rsh violet ls /home/robert lpr 2.5 Secure Shell (SSH) SSH (Secure SHell) telnet ve rsh gibi ağ üzerindeki diğer bilgisayarlara uzaktan kabuk erişimi ve dosya transferi için kullanılan bir programdır. Günümüzde rsh ve telnet gibi programların yerini alan ve hemen hemen bütün linux ve unix sürümlerinde standart olan uzaktan erişim aracıdır. SSH ın bu kadar popüler olmasının başlıca sebebi tüm haberleşmenin oldukça kuvvetli şifreleme algoritmaları ile şifrelenmesi ile ağ üzerindeki veri alışverişini güvenli kılmasıdır. Aynı şekilde dosya transferi ve SSH kullanılarak yapılacak olan tünelleme (IP Tunneling) işlemlerinde de bu şifreleme algoritmaları güvenlikten sorumludur. Cipher SSH1 SSH2 DES yes no 3DES yes yes IDEA yes no
Blowfish yes yes Twofish no yes Arcfour no yes Cast128-cbc no yes Tablo: SSH V1 ve SSH V2 Sürümlerinde Kullanılan Şifreleme Algoritmaları Günümüzde SSH versiyon 1(V1) ve 2(V2) olarak 2 farklı versiyona sahiptir. SSH V2 15 Haziran 2000 de ilk olarak OpenBSD 2.7 versiyonu ile birlikte dağıtıldığından beri SSH V1 ve V2 sunucuları ve istemcileri geriye doğru uyumlu bir şekilde çalışmaktadır. Ancak dikkat edilmesi gereken nokta SSH V1 in gelişiminin durmuş olması ve bu yüzden olası güvenlik açıklarının fark edilmeme ihtimali artmış olmasıdır. Bu yüzden güvenliğin ön planda olduğu sunucularda SSH V2 kullanılması gerekmektedir. Genelde çalışan sunucuların problem çıkarmadıkça çok fazla üzerinde oynama yapılmaması sebebi ile ve bir çok linux dağıtımının SSH V2 ye hemen geçmemesi sebebi ile SSH V1 sunucular hala oldukça fazla sayıda kullanılmaktadır. Aşağıda 2000 yılından 2004 yılına kadar SSH V2 ve SSH V1 kullanan pc lerin taranması ile elde edilmiş kullanım dağılımını görebilirsiniz. Grafik: 2000 2004 Yılları Arasında Kullanılan SSH versiyonları 2.5.1 SSH Kullanımı Uzaktan Kabuk Erişimi için; $ ssh makine_adı (yada makine ip adresi) -l kullanıcı_adı $ ssh maslak.be.itu.edu.tr -l serdar $ ssh 160.75.90.172 -l serdar veya $ ssh kullanıcı_adı@makine_adı (yada makine ip adresi) $ ssh serdar@maslak.be.itu.edu.tr
şeklinde ssh komutu kullanılabilir. Uzaktaki makineden kendi makinenize dosya ve dizin transferi için ; $ scp kullanıcı_adı@makina_adı:/dizin/dosya /dizin/ $ scp serdar@maslak.be.itu.edu.tr:/depo/betik.sh /tmp/ $ scp -r serdar@maslak.be.itu.edu.tr:/depo /tmp/ Kendi makinenizden uzaktaki makineye dosya ve dizin transferi için ; $ scp /dizin/dosya kullanıcı_adı@makina_adı:~/dizin/ $ scp /tmp/betik2.sh serdar@maslak.be.itu.edu.tr:~/ $ scp -r /tmp/ serdar@maslak.be.itu.edu.tr:~/ Uzaktaki makinede kabuk açmadan komut çalıştırmak için ssh uygulamasını aşağıdaki gibi kullanabilirsiniz $ ssh kullanıcı_adı@makine_adı komut $ ssh serdar@maslak.be.itu.edu.tr uptime SSH ile uzaktaki makineye kabuk bağlantısı yaptığınızda eğer uzaktaki makine üzerindeki X-Window uygulamalarını kullanmak isterseniz bu uygulamaların görüntülerini kendi makinenize yönlendirmeniz gerekmektedir. Eğer aşağıdaki gibi bir hata alıyorsanız bu yönlendirmeyi yapmamışsınız demektir. gursoy@silivri:~> ssh maslak l gursoy gursoy@maslak:~> xterm xterm Xt error: Can't open display: silivri:0.0 X-Window yönlendirmesi yapmak için iki yol vardır. Basit olanı SSH ın X11 Forwarding özelliğini kullanmaktır. Bu özellik SSH ın kendi şifrelenmiş tüneli içerisinden X-Window pencerelerini lokal makineye getirmesini sağlar. Bu şekilde bağlantı yapıldığında her uygulama ağ hızınızın iyi olduğu ortamlarda problemsiz olarak çalışacaktır ssh X maslak l gursoy Bir diğer görüntü yönlendirme şekli ise DISPLAY çevre değişkenini kullanmaktır. Aşağıdaki işlemleri sırayla gerçekleştirmek gerekir Lokal makinede uzak makineden gelen pencerelerin gösterilmesine izin vermek için xhost komutu kullanılır. $ xhost + görüntü_yollayacak_makine_adı(ya da ip adresi) $ xhost + maslak.be.itu.edu.tr Gelen bütün görüntülere izin vermek için xhost komutuna makine adı belirtmeden kullanabilirsiniz $ xhost +
Verilen izni kaldırmak içinse komutu aşağıdaki gibi kullanabilirsiniz $ xhost maslak.be.itu.edu.tr $ xhost - İkinci aşama uzaktaki makinedeki DISPLAY çevre değişkenini lokal makinenizi ifade edecek şekilde değiştirmenizdir. Örneğin maslak makinesinden silivri makinesine görüntü yönlendirmek istersem maslak makinesinde aşağıdaki komutu çalıştırmam gerekmektedir; Sh, bash kabukları için; $ export DISPLAY=silivri.be.itu.edu.tr:0.0 csh, tcsh için $ setenv DISPLAY=silivri.be.itu.edu.tr Bu aşamadan sonra maslak makinesinde çalıştırdığınız X-Window uygulamalarının pencereleri silivri makinesine yönlendirilecektir. 2.5.2 Şifresiz SSH Bağlantısı SSH uygulamasının anahtar bazlı bağlantısını kullanarak şifresiz bir şekilde makineler arası bağlantı yapmak mümkündür. Bu özellik özellikle sistem yöneticilerine kolaylık sağlamaktadır. Ağ üzerinde çalışan betikler için oldukça kullanışlı bir özelliktir. Genel olarak sistem şu şekilde çalışmaktadır. İlk olarak kullanıcı dsa yada rsa algoritmasıyla genel(public)/özel(private) anahtarlarını (key) üretir. Özel anahtarını çalıştığı makinenin ~/.ssh/id_dsa dosyasına kopyalar. Genel anahtarını şifresiz ssh yapacağı makinelerin ~/.ssh/authorized_keys2 dosyasının sonuna ekler. Bağlantı aşamasında özel anahtar kullanılarak tek kullanımlık bir imza(signature) üretilir. SSH yapılacak olan makinedeki genel anahtar ancak bu özel anahtarın ürettiği imzalara sahip kullanıcıların şifresiz olarak kabul etmektedir. İki makine arasında şifresiz ssh yapabilmek için ilk olarak aşağıdaki çalıştırılması gerekmektedir. komutların İlk olarak genel/özel anahtar çiftini yaratılması gerekmektedir $ ssh-keygen t dsa (Çıkan soruların hepsini öntanımlı cevapları kabul edecek şekilde enter a basarak geçiniz) Anahtarları ürettiğiniz makinedaki genel anahtarı ssh yapacağınız makinelerdeki ~/.ssh/authorized_keys2 dosyasına eklemeniz gerekmektedir. $ cat ~/.ssh/id_dsa.pub > ~/.ssh/authorized_keys2
(Laboratuardaki tüm bilgisayarlara ev dizininiz sunucu üzerinden dağıtıldığı için artık ~/.ssh/authorized_keys2 dosyası her makinede bulunmaktadır.) Ardından SSH yapmadan önce aşağıdaki komutları çalıştırmanız gerekebilir; $ ssh-agent bash $ ssh-add ~/.ssh/id_dsa Artık şifresiz olarak ssh yapabilirsiniz.