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 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.
|
|