UNIX Dilinde Konuşma, Bölüm 3: Her şeyi komut satırından yapın

0
butch
IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

UNIX Dilinde Konuşma, Bölüm 3: Her şeyi komut satırından yapın

Birbirine bağlı bir dünyada yaşıyoruz

Düzey: Orta

Martin Streicher (martin.streicher@linux-mag.com), Şef Editör, Linux Magazine

05 Eylül 2006

Tüm Internet'i komut satırınıza taşıyan üç önemli UNIX yardımcı programını keşfedin.

UNIX® komut satırı, bir WYTIWYG (What you type is what you get; Ne yazarsanız onu alırsınız) arabirimdir. UNIX, çekirdek ve kullanıcı alanında çok çeşitli kullanılabilir kaynakları işleyebileceğiniz binlerce olmasa bile, yüzlerce komut sağlar. CPU kullanımını izlemeniz mi gerekiyor? top ya da ps komutunu deneyin. .bak uzantılı tüm dosyaları kaldırmak mı istiyorsunuz? rm *.bak komutunu deneyin. Yeni bir komutla ilgili yardım mı istiyorsunuz? man komutunu çalıştırın.

Ancak, ihtiyacınız olan kaynaklar, geniş alan ağınıza (WAN) ve küresel Internet'e bağlı uzak bir sistemdeyse ne yaparsınız? Otostopçunun Galaksi Rehberi'nde de söylediği gibi "panik yapmayın!". UNIX komut satırı, dosyaları kolayca yükler, uzaktaki bilgisayarlara bağlanır ve uzaktaki sunucuları ve ağları araştırır. Valizinizi hazırlayın: Güneş sistemi dışındaki sistemlere yolculuğa başlıyoruz.

Yerel çalışın, genel aktarın

Bu dizinin Bölüm 1 ve Bölüm 2 makalelerinde, UNIX komut satırıyla neler yapabileceğinizi öğrendiniz. Dikey çubuk (|) ya da yeniden yöneltme de dahil olmak üzere birkaç tuşla, parçalarının toplamından daha güçlü bir veri işleme makinesi oluşturabilirsiniz.

Günlük olarak kullandığınız kaynakların bazıları yereldir, yani kendi iş istasyonunuzda bulunurlar. Diğer yandan, varlıkların önemli bir kısmı da (dosyalar, e-posta iletileri ve araçlar) uzak bir konumda, örneğin WAN'nize ya da Internet'e bağlı bir makinede saklanır ve bu tür varlıkların miktarı giderek artmaktadır. Web tarayıcıları bu tür kaynaklara neredeyse evrensel erişim sağlar, ancak bir noktada sizi uyarmam gerekiyor: Özellikle bir avuç öğeden daha fazlasını almanız gerekiyorsa, gösterme ve tıklatma yöntemi kısa sürede yorucu, hatta eziyet verici bir hal alabilir. Dahası, özellikle yakalama ve yeniden yürütme gibi yineleyen ya da hataya eğilimli görevler için komut dosyası yazmak istiyorsanız, pencereli bir tarayıcı zor bir müttefik olabilir.

ls, cp, mail, uptime, du manage ve query local resources komutlarına çok benzer bir şekilde UNIX de uzak kaynaklara erişmek için bir grup komut satırı aracına sahiptir. Bu makalede bu araçların bir kısmı anlatılacaktır. Anlatılacak araçlar, uzak sistemlere erişimi kolaylaştıran ve doğrulama için kullandığınız kimlik bilgilerinizi koruyan yararlı bir tekniği de içerir. Özellikle, wget, curl ve Güvenli kabuk (ssh) araçlarıyla ilgili bilgi verilecektir. wget ve curl araçları dosyaları aktarır; ssh ile uzak sistemlerde güvenli bir şekilde oturum açabilir ve dosyaları hızla ve kolayca aktarabilirsiniz.

Telnet (ve diğerleri) ile ilgili sorun

Sistemlerinizden herhangi biri rsh (ya da rcp, rexec, rlogin veya Irdist gibi farklı biçimlerini) ya da telnet komutunu çalıştırıyorsa, bunları ve bunlara eşlik eden yardımcı programları hemen devre dışı bırakın ve kaldırın. Ayrıca, anonim FTP'ye (Dosya Aktarımı Protokolü) izin vermiyorsanız, FTP yazılımını da devre dışı bırakın.

rsh ve FTP'den yararlanma

rsh ve FTP 'den yararlanmaya ilişkin bilgi ve demolar için "Security Vulnerability between FTP and Berkeley Rsh/Rlogin Protocols" ve "Stupid, Stupid Protocols: Telnet, FTP, rsh/rcp/rlogin" başlıklı makalelere bakın.

rsh ve telnet uzun süredir UNIX ile birlikte kullanılan güvenilir araçlardır, ancak bilgisayar korsanları her iki yardımcı programı da kullanarak sisteminizi (kolayca) tehlikeye sokabilirler. Siz ya da sistem yöneticiniz, çalıştır durumda gördüğünüz anda bu yazılımı durdurup kaldırmalı ve bu paketlerin özelliklerini ssh ile değiştirmelisiniz.

Ayrıcalıklı FTP erişimi için sftp kullanın. rdist aracını, daha gelişmiş bir araç olan rsync ile değiştirin. Anonim FTP (ya da HTTP üzerinden yükleme) sağlamanız gerekiyorsa, genel olarak erişilebilen tüm bilgisayarları hassas bilgiler içeren dahili sunuculardan yalıtmak için güvenlik duvarı donanımı ya da yazılımı kullandığınızdan emin olun.

Ancak öncelikle, parolaların neden olduğu sinir bozucu sorunlardan söz edelim.

"Parolalara ihtiyacınız yok!"

Genellikle, bilgisayarların ve hizmetlerin çoğu için erişim koruma uygulanır. Bazı durumlarda, kimliğinizin (ve dolayısıyla sisteme erişim ayrıcalığınızın) doğrulanması karmaşık bir kimlik sorma-yanıtlama değiştokuş işleminin gerçekleştirilmesini, bir SSL (Güvenli Yuva Arabirimi Katmanı) sertifikasını ya da biyometrik bir taramayı gerektirebilir. Ancak, genellikle erişim sağlanması için bir parola yeterli olur. Kişisel kimlik numaranız (PIN) gibi, parolanız da gizlidir; parolanızı iyi seçerseniz, diğerleri rasgele bir şekilde parolanızı tahmin etmekte oldukça zorlanır. Adınızın ve güçlü bir parolanın birleşimi, yeterli doğrulama sağlar.

Elbette, güçlü parolaları hatırlamak zor olabilir ve zorluk, sekiz karakterden oluşan başka bir anahtar (örneğin, sayılardan, noktalama işaretlerinden oluşan, büyük/küçük harf karışık) aldığınızda ve bunu ezberlediğinizde yalnızca daha da kötüleşir. Bir parolayı tekrar tekrar yazmak büsbütün sinir bozucudur ve daha da kötüsü, otomasyonun önünde önemli bir engel oluşturur.

Bu engeli bilerek, birçok komut satırı yardımcı programı, kullanıcı adınızı ve parolanızı komut satırı bağımsız değişkenleri olarak sağlamanıza olanak tanır. Örneğin, bir FTP sitesinde, aşağıdakine benzer bir komutu kullanarak herhangi bir müdahaleye gerek kalmadan oturum açabilirsiniz:

ftp ftp://ali:parola@www.örnek.com

Ancak böyle bir olanağın kullanılması, kimlik bilgilerinizin, bilgisayarınızı paylaştığınız diğer kullanıcılar tarafından görülmesine neden olabilir. (Örneğin, sistemde gerçekleştirilen her işlemin komut satırının tamamını ve ortamını görmek için ps -Aeww komutunu girmeyi deneyin.)

Bu olanağın kullanılmasından kaynaklanan riskler olmadan komut satırı seçenekleriyle aynı kolaylığı sağlamak için birçok program, kimlik bilgilerinizi .netrc (net-ar-si olarak okunur) adlı özel bir dosyadan okuyabilir. Bu dosya, genellikle ~/.netrc dizininde bulunur. .netrc dosyanız yalnızca sahibi tarafından okunur-yazılır modda (0600 ya da -rw------- modu) olması gerekir ve dosyadaki her bir giriş, aşağıdaki basit sözdizimine eklenmelidir:

machine ftp.example.com login zaphod password I()Trillian!

machine www.magazine.com login abner password MmG8y*tr

default login anonymous password zaphod@heartofgold.com

İlk iki satır machine (makine) anahtar sözcüğü ile bilgisayarın etki alanını, login (oturum açma) anahtar sözcüğü ile bilgisayardaki oturum açma adınızı ve password (parola) anahtar sözcüğü ile ardından oturum açma kimliğinizle ilişkilendirilen parolayı sağlar. Son satırdaki kimlik bilgileri, özel olarak adlandırılmamış diğer sistemler için bir varsayılan değerdir. default satırı, .netrc dosyasındaki son satır olmalıdır. (.netrc dosyası yapılandırma seçeneklerinin tam açılımını görmek amacıyla .netrc man sayfasında man 5 netrc komutunu girin.)

Herhangi bir dosya kimlik verilerini içeriyorsa, bu dosyanın yanlışlıkla üzerine yazılmaması veya kaldırılmaması için, dosyayı kullanıcı yalnızca okunur-yazılır moduna (600 modu) ya da kullanıcı yalnızca okunur moduna (400) alarak güvenli kılın. Ana dizininizi de 700 moduyla korumak isteyebilirsiniz.

Artık, daha sonra anlatacağım uygulamalar da içinde olmak üzere, .netrc'nin etkinleştirildiği bir uygulamayı başlattığınızda, uygun oturum açma adı ve parola, istenen hizmete, hiçbir klavye tuşuna basılmadan, otomatik olarak geçirilir. Bu auto-login (otomatik oturum açma) özelliğini genellikle -n seçeneğiyle devre dışı bırakabilirsiniz.

Taşıma işlemi

Web sayfaları için HTTP ve SSL üzerinden HTTP (HTTPS) ile birlikte FTP, en sık kullanılan Internet uygulaması protokollerinden biridir. FTP aracılığıyla bir istemci, bir sunucuya bağlanabilir, dizin ve dosyaların bir listesini alabilir ve bir dosyayı karşıdan yükleyebilir (sunucudan bir dosya isteyebilir) ya da karşıya yükleyebilir (dosyayı, kalıcı olarak sunucuya gönderebilir). ftp://ftp.example.com/path/to/anotherfile.zip ve ftp://user:password@ftp.example.com/path/to/file.zip biçimlerinin URL'leri, FTP protokolü kullanıldığında, ftp.example.com sitesine bağlan ve /path/to/anotherfile.zip dosyasını karşıdan yükle anlamına gelir. İkinci URL'de yalnızca oturum açmaya ilişkin kimlik bilgileri de eklenmiştir.

Çoğu masaüstü bilgisayarında bu tür URL'ler, belirtilen dosyayı karşıdan yüklemek için tarayıcıyı ya da varsayılan FTP uygulamasını başlatır. Ancak, aynı URL'leri, dosyaları HTTP, HTTPS ve FTP üzerinden yüklemek için güvenilir bir yardımcı program olan wget komut satırı yardımcı programıyla da kullanabilirsiniz. Bu yardımcı program .netrc dosyalarını destekler ve kesinlikle etkileşimli olmaması, otomasyon için bu programı en uygun seçenek yapar. Sisteminizde wget yoksa, kaynak kodunu GNU Software Foundation (GNU Yazılım Derneği) sayfasından yükleyebilirsiniz. Birkaç basit komutla tüm UNIX varyasyonlarında hemen kurulabilen bu yardımcı programı, kişisel bin dizininize ya da merkezi bir dizine yerleştirebilirsiniz.

Hazır bir .netrc dosyanızın olduğu varsayımıyla, wget ile yapabileceklerinize ilişkin bazı örneklere bakalım. (Aşağıdaki örneklerde, satır numarası başvuru için sağlanmıştır; numaraları yazmanıza gerek yoktur.) Liste 1 içinde, komut satırının rahatlığını terk etmeden dosyaları karşıdan yüklemek için wget yardımcı programını nasıl kullanacağınız gösterilmektedir.


Liste 1. Komut satırında karşıdan dosya yüklemek için wget yardımcı programının kullanılması
1 $ wget http://ftp.gnu.org/pub/gnu/wget/wget-1.10.2.tar.gz
--16:02:29--  http://ftp.gnu.org/pub/gnu/wget/wget-1.10.2.tar.gz
           => `wget-1.10.2.tar.gz'
Resolving ftp.gnu.org... 199.232.41.7
Connecting to ftp.gnu.org[199.232.41.7]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,213,056 [application/x-tar]

100%[=====================>] 1,213,056    531.22K/s             

16:02:37 (529.57 KB/s) - `wget-1.10.2.tar.gz' saved [1213056/1213056]

2 $ wget -q ftp://mirror.linux.duke.edu/pub/centos/4.3/os\
  /i386/RELEASE-NOTES-en.html

3 $ cat url_list.txt
http://www.wikipedia.com
http://valdez.barebones.com/pub/freeware/TextWrangler_2.1.3.dmg

4 $ wget -i -nv url_list.txt

16:06:00 URL:http://www.wikipedia.org/ [33606] -> "index.html" [1]
16:06:41 URL:http://valdez.barebones.com/pub/freeware/
  TextWrangler_2.1.3.dmg [9488296/9488296] -> 
  "TextWrangler_2.1.3.dmg" [1]
FINISHED --16:06:41--
Downloaded: 9,521,902 bytes in 2 files

5 $ ls
RELEASE-NOTES-en.html   index.html              wget-1.10.2.tar.gz
TextWrangler_2.1.3.dmg  url_list.txt

Komut 1, HTTP aracılığıyla proje ana sayfasından en son wget kaynak kodunu yükler. Varsayılan değer olarak wget, ilerlemeyle ilgili size bilgi sağlar. -q (sessiz mod) seçeneğiyle tüm iletileri devre dışı bırakabilirsiniz. Komut 2, çok sessiz bir şekilde FTP üzerinden CentOS yayın notlarının bir sürümünü alır.

URL'lerin korunması

İşte size bir ipucu: Birçok HTTP URL'si, kabuğunuz için de özel olan bazı karakterler içerir. Örneğin, birçok URL, anasistem adını ve yolu, bağımsız değişkenler listesinden ayıran bir soru işareti (?) içerir. Ancak kabuk, soru işaretini bir joker karakter olarak yorumlar.

Kabuğunuzun bu yorumu yapmasını engellemek için URL'yi tek tırnak içine alın. Garip ve uzun dosya adlarından kaçınmak amacıyla, çıkış dosyasını adlandırmak için wget -o seçeneğini kullanın. Aşağıdaki örneği inceleyin:

$ wget -o sharkey \

'http://www.example.com/\ 
download.cgi?proj=science&file=sharkey'

Karşıdan yüklemek için uzun bir URL listeniz varsa, bu URL'lerin her birini komut satırına yerleştirmeniz gerekir. Bunun yerine, karşıdan yüklenecek URL'lerin bir listesini oluşturabilirsiniz. Komut 3'te, iki URL içeren basit bir metin kataloğu olan url_list.txt dosyası gösterilmekte ve Komut 4'te bu iki URL karşıdan yüklenmektedir. Bir liste sağladığınızda -i seçeneğini kullanın. -nv seçeneği (not verbose (ayrıntılı değil) sözcükleri için kullanılan bir kısaltmadır) daha kısa iletiler sağlar.

Karşıdan yüklenecek dosya için (-o seçeneği ile) bir dosya adı sağlamazsanız, wget, baştaki URL'nin tamamını atlayarak uzak dosyayla aynı adı taşıyan yeni, yerel bir dosya oluşturur. Komut 5'te, komut 1 ile 3 arasında karşıdan yüklenen dört dosya gösterilmektedir.

wget yardımcı programında birçok seçenek ve özellik vardır. Bu program, bir FTP ya da Web sitesinin tamamını alabilir ve dosyaları tüm hiyerarşisiyle birlikte karşıdan yükleyebilir. Ayrıca, otomatik karşıdan yüklemeler için bir kota belirleyebilir, tanıtıcı bilgiler (cookies) sağlayabilir ve kesintiye uğrayan önceki bir karşıdan yükleme işlemine devam edebilirsiniz. Aracın püf noktalarıyla ilgili daha fazla bilgi almak için wget man sayfasını okuyun.

Yukarı çıkma

wget yardımcı programı, el ile müdahale edilmeyen karşıdan yüklemeler için paha biçilemez bir yardımcı program olsa da dosyaları karşıya yükleyemez. Güvenli FTP, telnet ve diğer (eski ya da daha az kullanılan) Internet protokollerini kullanan bir anasistemle de çalışamaz. Bu tür aktarımlar için, ağ işlemlerinin gerçek Swiss Army çakısı sayılabilecek curl aracını kullanmanız gerekir.

curl komut satırı yardımcı programı verileri alabilir ve yerleştirebilir. Bu nedenle, yerel dosyaları uzak sunuculara aktarmak için ideal bir programdır. Daha da iyisi, curl aracının temeli olan libcurl kitaplığında, curl yardımcı programının tüm özelliklerini kendi uygulamalarınızda sorgulayan, zengin bir uygulama programlama arabirimi (API) vardır. C, C++, PHP ve Perl programlama dilleri, libcurl'den yararlanan birçok programlama dilinden yalnızca dördüdür. Sisteminizde curl ve libcurl yoksa, kaynak kodunu libcurl ana sayfasından yükleyebilirsiniz.

curl, yerel dosyaları uzak sunuculara kopyalayabildiğinden, küçük yedekleme işlemleri için en uygun araçtır. Örneğin, Liste 2'de veritabanı dökümleriyle dolu bir dizini güvenli koruma için uzak bir FTP sunucusuna kopyalayan bir kabuk komut dosyası gösterilmektedir.


Liste 2. Veritabanı dökümlerinin uzakta saklanması için curl yardımcı programının kullanılması
    
foreach db (mydns mysql cms tv radio)
  /usr/bin/mysqldump --ppassword --add-drop-table -Q --complete-insert $db > $db.sql 
end

find dbs -mtime -1 -type f -name '*.sql' -print | foreach file (`xargs`)
  curl -n -T $file ftp://ftp1.archive.example.com
end


curl -n komutu, curl aracının .netrc dosyanızı okumasını sağlar. -T seçeneği, curl aracına, adı geçen dosyaların belirtilen URL'ye yükleneceğini bildirir. Hedef dosya adını atlarsanız, curl, karşıya yüklenmekte olan dosyanın adını yeniden kullanır.

Tahmin edebileceğiniz gibi curl, wget yardımcı programından daha çok seçeneğe sahiptir. curl man sayfasını okumanız ve aklınızda bulundurmanız daha yararlı olacaktır. curl projesi, bir kullanım listesi de sağlar. Bu liste, HTTP POST ve PUT komutlarını kullanmanız, oturum açma kimlik bilgilerini sağlamanız, SSL sertifikalarını kullanmanız ve curl isteklerinizde hata ayıklaması yapmanız için gerekli komutları içerir. Kısa bir ipucu: İzleme bilgilerini oluşturmak için curl -v --trace-ascii ... komutunu deneyin.

Altı ayırma adresi

Modern bilgi işlem büyük oranda, tüm şekillerdeki, boyutlardaki ve hizmet türlerindeki makineler arasındaki sayısız küçük bağlantıya dayanır. Aslında, küçük bilgi işlem ortamlarında bile, bir bilgisayar e-postaya, başka bir tanesi Web sayfalarına hizmet vermeye ve diğerleri de daha özelleştirilmiş görevleri gerçekleştirmeye ayrılabilir. Genellikle bir LAN (yerel ağ), WAN ya da VPN (Sanal Özel Ağ) ile bağlanan bu ortamda, her gün birkaç bilgisayarda oturum açmak oldukça yaygındır ve gereklidir. Sistem yöneticileri sürekli olarak bir bilgisayardan diğerine geçerler, ancak geliştiricilerin ve diğer kullanıcıların önemli bir uygulamaya uzaktan erişmek için oturum açmaları gerekir.

X Window Sistemi ve geçerli masaüstü yazılımı, uzaktan erişimi oldukça saydamlaştırır: Pencere bir sonuçta penceredir ve altta çalışan uygulama, herhangi bir bilgisayarda çalışıyor olabilir. Ancak yine, sürekli fare ile çalışmamıza rağmen komut satırının özel bir yeri vardır. Örneğin, aynı komutu birden çok bilgisayarda sorunsuz bir şekilde nasıl çalıştırabilirsiniz? Ya da daha basit bir soru sorarsak, bir xterm penceresini uzak bilgisayarda nasıl başlatırsınız?

ssh ve türevlerinin, scp ve sftp'nin anlamı uzak sistem erişimidir. ssh, rsh'nin güvenli sürümü, scp ve sftp de sırasıyla rcp ve FTP'nin güvenli sürümleridir. Neden güvenli? ssh ve türevleri, daha güçlü doğrulama düzenekleri sağlar ve tüm trafiği, birkaç şifre arasından seçtiğiniz yöntemle şifreler. Birisi ağınıza sızsa bile, ssh trafiği oldukça anlaşılmaz görünecektir.

ssh'nin en basit kullanımı, ssh hostname biçimindedir. Bu komut, hostname anasistemine bağlanır ve size bir oturum açma ve parola bilgi istemi sunar. Doğru kimlik bilgilerini sağladığınızda, içerir girersiniz:

(www.joe.com) $ ssh web.example.com
Login: arthur
Password: ******
( web.example.com) $  

Bir uzak sistemde yalnızca bir komut çalıştırmak istiyorsanız, oturum açmanıza gerek yoktur. Yalnızca ssh'nin bağımsız değişkeni olarak komut sağlamanız yeterlidir. Örneğin, Liste 3'te gösterilen komut, uzak bilgisayarda hostname -a -v komutunu çalıştırır.


Liste 3. Uzak sistemde bir komut çalıştırmak için ssh'nin kullanılması
    
(www.joe.com) $ ssh db.linux-mag.com hostname -a -v
Login: vogon
Password: ******
db
gethostname()=`db.linux-mag.com'
Resolving `db.linux-mag.com' ...
Result: h_name=`db.linux-mag.com'
Result: h_aliases=`db'
Result: h_addr_list=`64.34.170.230'

ssh, db.linux-mag.com adresine bir bağlantı açtı ve hostname -a -v bağımsız değişkenlerini uzak bilgisayara iletti. Bunlar da komutu çalıştırdı ve çıkışı yerel bilgisayara döndürdü.

ssh, bir bilgisayardan diğerine dosyaları ve tüm dizinleri kopyalamak için de kullanışlı bir yol sunar. scp kullanmak, neredeyse cp kadar kolaydır. Aşağıdaki örneği inceleyin:

(www.joe.com) $ scp -p -r ~/myproject web.example.com:

Bu komut, ~/myproject dizinini web.example.com adresine kopyalar. Bir hedef yol adı belirlemezseniz, dosyalar ana dizininize kopyalanır. -r seçeneği, recursive (özyineli) modunu etkinleştirirken, -p seçeneği, tüm dosyaların tarih ve saat damgalarını korur. Burada scp, aşağı iner ve tüm alt dizinleri de kopyalar.

Bu arada, önceki scp komutu, aşağıdaki komutu çalıştırmayla aynı işlevi görür:

(www.joe.com) $ tar czf - ~/myproject | ssh www.example.com tar xvzf - 
Login: deepthought
Password: ******

Evet, bir yerel komutun çıkışını, uzak bir komuta ya da uzak bir komutun çıkışını, yerel bir komuta aktarabilirsiniz.

Büyük olasılıkla şimdiden, bu parola istemlerinden sıkılmış olmalısınız. Yinelenen bilgi istemleri işi yavaşlatır ve otomasyonu önler. Uzun anasistem adlarını tekrar tekrar yazmaktan da yorgun düşmüş olabilirsiniz. ssh genel ya da özel anahtar doğrulamasını ve sistem diğer adlarını desteklediği için şanslısınız.

DSA şifreleme şemasını kullanarak bir genel ya da özel anahtar çifti oluşturalım. Bunu yapmak için, anahtar çiftini oluşturmanız, genel anahtarı uzak sisteme kopyalamanız, bilinen anahtarlar listesine eklemeniz ve her şeyin düzgün çalıştığını doğrulamanız gerekir. Bunun için Liste 4'e bakın.


Liste 4. Genel ya da özel anahtarın oluşturulması ve kurulması
        
1 $ cd ~
2 $ mkdir .ssh

3 $ chmod 700 .ssh
4 $ cd .ssh
5 $ ssh-keygen -t dsa 
Generating public/private dsa key pair.
Enter file in which to save the key (/home/mstreicher/.ssh/id_dsa): ./id_dsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ./id_dsa.
Your public key has been saved in ./id_dsa.pub.
The key fingerprint is:
40:6c:26:e7:53:df:d1:7b:c4:79:c5:a8:cd:6b:fe:8e mstreicher@db.linux-mag.com
6 $ ls
id_dsa  id_dsa.pub
7 $ chmod 600 *

8 $ scp id_dsa.pub www.example.com:

Login: marvin
Password: ******
id_dsa  100%  668     0.7KB/s   00:00  

9 $ ssh www.example.com
Login: marvin
Password: ******
A $ mkdir .ssh

B $ chmod 700 .ssh
C $ cd .ssh
D $ cat ../id_dsa.pub >> authorized_keys
E $ rm ../id_dsa.pub
F $ chmod 600 *

G $ logout

10 $ ssh www.example.com

a $ hostname
www.example.com
b $ logout

Komut 1 - 3, ana dizininizde .ssh adlı bir özel yerel dizin oluşturur. Bu dizin 700 modunda olmazsa, ssh genel ya da özel anahtar doğrulamasını kullanmaz. (Adım A ile C arasında uzak bilgisayarda aynı komut sırasının çalıştırıldığını görebilirsiniz.) Komut 5, DSA kullanarak anahtar çiftini oluşturur. Şimdilik, iki parola tümceciğini (passphrase) boş bırakın. (Bunlar fazladan bir güvenlik düzeyi daha sağlar, ancak başka bir doğrulama adımının eklenmesini gerektirir.) ssh-keygen iki dosya oluşturur: id_dsa (özel anahtar) ve id_dsa.pub (genel anahtar). Adım 6'da dosyalar gösterilir, Adım 7'de her iki anahtar da korunur. Anahtarlarınızın, 0600 ya da 0400 modunda olması gerekir.

Joker karakterlerin uzak kabuklara geçirilmesi

Örneğin, uzak ana dizininizdeki tüm C kaynak dosyalarını listelemek istediğinizi varsayalım. Yerel olarak ls -l *.c gibi bir şey yazardınız ve ssh ile bu işlemi denerdiniz:

$ ssh www.example.com ls -l *.c


Burada iki şey olabilir: Yerel bilgisayarınızdaki geçerli çalışma dizininizde hiç C dosyanız yoksa, kabuk zsh: no matches found: *.c (zsh: eşleşme bulunamadı: *.c) diye şikayet eder ya da geçerli çalışma dizininizde, uzak bilgisayardaki ana dizininizde olmayan C dosyaları varsa, uzak bilgisayardaki kabuk ls: whosit.c: No such file or directory (ls: whosit.c: Böyle bir dosya ya da dizin yok) diye yine yakınabilir.

Buradaki sorun, * joker karakterinin, ssh komutu gönderilmeden, önce yerel kabuk tarafından açılıyor olmasıdır. Oysa sizin niyetiniz, * karakterinin uzak sistemde açılmasıydı.

Bunun için yapmanız gereken yerel kabuğun, joker karakterini yorumlamasını (yeniden) önlemenizdir. * karakterini tek tırnak işaretlerinin içine yerleştirebilir ya da yıldız işaretinin önüne bir sola eğik çizgi (\) koyabilirsiniz. Daha sonra, yıldız karakteri, uzak kabuğa sıradan bir karakter gibi geçirilir ve uzak bilgisayarın bağlamında yorumlanır.

Burada bu iki yaklaşımı görebilirsiniz. Her bir duruma uygun olanı kullanın:

$ ssh www.example.com ls -l \*.c

$ ssh www.example.com ls -l '*'.c

Adım 8'de genel anahtar uzak bilgisayara kopyalanır. Şimdilik parolanızı yazmanız gerekiyor, ancak bu, parolanızı son yazışınız olacak. A ile C arasındaki komutlar, özel .ssh dizinini oluşturur ve Adım D'de genel anahtar, yetkili anahtarlar listesine eklenir. Dosyaya verilen adın (authorized_keys) bir amacı vardır. Dosya adını değiştirmeyin. Adım E'de anahtarın kopyası kaldırılır; Adım F'de dosyalar Adım 7'deki gibi korunur.

Oturumu kapatıp yeniden açtığınızda, parola girmenize gerek kalmayacaktır. ssh (scp ve sftp), özel anahtarınızı, uzak genel anahtarla sınar. Bir eşleşme bulunursa, kimlik bilgileriniz güvenilir kabul edilir ve daha fazla tanıtıma gerek kalmadan oturum açabilirsiniz.

Bazı sistemler her zaman bir parola girilmesini gerektirir; diğer sistemler DSA üzerinden RSA yöntemini tercih edebilir. Belirli bir bilgisayarda nasıl oturum açacağınızı sistem yöneticinize sorun. Sistem yöneticileri, bir sistemin daha erişilebilir olması için bazı genel ayarları da yapabilir.

Çevrimiçi, her yerde, her zaman

Bugünlerde, Internet uzaktaki insanları çok çeşitli yöntemlerle, insanlık tarihinde daha önce görülmemiş bir şekilde birbirine bağlıyor. Gününüzün ayrıntılarını günlüğünüzde paylaşabiliyor ya da yeni projeleriniz için gerekli kaynak kodlarını karşıdan yükleyebiliyorsunuz. Bir yerlere gitmek için tekerleklerin yerini artık kablolar aldı.

Web'de sörf yapmak hala popüler bir spor, ancak gerçek sörf için zaman yaratmak amacıyla geliştiriciler, tüm dosya aktarımı türlerini otomatikleştiren yollar yaratıyorlar. Komut dosyalarını ve birkaç UNIX yardımcı programını kullanarak, dış Web ve yükleme sitelerinizi güncel tutabilirsiniz. Birkaç tuşa basarak dosyaları yükleyebilir ve işlemi hızlı ve kolay bir hale getirebilirsiniz. Bir .netrc dosyası oluşturursanız, bu çalışmayı daha da hızlandırabilirsiniz. Artık parola yok.

Kafanız rahatladığına göre, aracınızın üstünü açın ve bilgi otobanında bir yolculuğa çıkın. Fiberin Ucundaki Restoran'da görüşürüz. Son gelen hesabı öder!



Kaynaklar

Bilgi Edinme
  • UNIX Dilinde Konuşma: Bu dizinin diğer bölümlerini de inceleyin.

  • curl: En yaygın Internet protokollerinin birçoğunu kullanarak çeşitli kaynakları karşıdan yüklemek için Curl yardımcı programının akıllı yöntemlerini keşfedin.

  • AIX ve UNIX: UNIX becerilerinizi geliştirmek için developerWorks AIX ve UNIX bölgesini ziyaret edin.

  • AIX ve UNIX'te yeni olanlar: AIX ve UNIX ile ilgili daha fazla bilgi almak için New to AIX and UNIX (AIX ve UNIX'te yeni olanlar) sayfasını ziyaret edin.

  • developerWorks teknik etkinlikler ve web yayınları: Güncel developerWorks teknik etkinliklerini ve web yayınlarını izleyin.

  • AIX 5L Wiki: AIX ile ilgili teknik bilgilere ilişkin bir işbirliği ortamı.

  • Podcasts: İlgili ayarları yapın ve IBM teknik uzmanlarının bilgilerine ulaşın.

Ürün ve teknoloji edinme

Tartışma


Yazar hakkında

Martin Streicher, Linux Magazine adlı dergide Şef Editör'dür. Purdue University'den bilgisayar bilimi konusunda master derecesi almış ve 1982 yılından bu yana UNIX benzeri sistemlerde Pascal, C, Perl, Java ve (en son) Ruby programlama dillerinde programlama yapmaktadır. Martin'e martin.streicher@linux-mag.com adresinden erişebilirsiniz.

İlgili Yazılar

Ajax Konusunda Uzmanlaşma, Bölüm 7

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

Sürdürmeler ve gelişmiş akış denetimi

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

Python Web çerçeveleri, Bölüm 2: TurboGears ve Python ile Web geliştirmesi

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

developerWorks: Yüksek performanslı Linux kümeleme 2: Çalışan Bir Küme Oluşturma

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

UNIX Dilinde Konuşma, Bölüm 2: Daha çok değil, daha akıllı çalışma

tongucyumruk

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.