Uğur “vigo” Özyılmazel | Macports, ssh otomatik tamamlama ve genel bilgiler
macports bash completion ssh config
Tonlarca (abartmiim, yazıyı yazdığım anda toplam 6133 adet) uygulama, ağırlıkta Linux - Unix dünyasının çok sık kullandığı, osx için port edilmiş halde bizi bekliyor!
Eğer development’la uğraşıyorsanız zaten faydalarını saymakla bitiremem. Eğer standart bir kullanıcıysanız bile, pek çok işe yarar uygulama edinebilirsiniz. Unutmadan belirteyim, bu uygulamaların hepsi open source (açık kaynak) uygulamalar. Bu bakımdan hem kaynak kodu açık, hem de ücretsiz. Hem de sürekli güncelleniyor.
Dedim ya, eğer yazılım geliştirme işleriyle uğraşmıyorsanız nasıl faydalanacaksınız? İlk aklıma gelen şey, eskiden kalma Mustek CU 1200 scanner’ım. Evet, ben bu cihazı, Windows / PC ile uğraşırken satın almış ve Windows XP dışında hiç bir Windows’da çalıştıramamıştım.
Hatta support’larına mesaj atmış ve sadece XP’de çalışır cevabını almıştım. Tabii bunun üzerine odamdaki dolapta, hurdaların yanında yerini almıştı. Taaki macportsa kadar.
S.A.N.E adında, open source geliştirilen proje: Scanner Access Now Easy sayesinde, uzunca yıllar kullanamadığım scanner’ımı, Mac’de, Terminal üzerinden kullanmaya başladım.
Hatta işin komik tarafı, daha önce 600dpi tarama yapmayı başaramamıştım! Scanner’ı bağlayıp, Terminal’i açıp:
scanimage -v -p --format tiff --mode color --resolution 300 > test300.tiff
yazınca, 300dpi - tiff şeklinde scan edilmiş resim. Derseniz ki:
Kardeşim ben terminal filan anlamam, yok mu bunun kolayı?
evet o da var. http://www.ellert.se/twain-sane/ sitesinde, aynen MacPorts’da bulunan uygulamanın gui’li hali de var. Prefpane’i filan da mevcut, kolay konfigüre edilebiliyor.
Konuyu süper dağıttığımı görüyorum ve hemen asıl mevzuya dönüyorum. Geçenlerde, bash completion konusuna değinmiştim. Hatta bununla da kalmayıp Django için nasıl otomatik tamamlama yapılabileceğini de yazmıştım.
ssh üzerinden tünel yapma işlerini denerken sevgili iş arkadaşım Fırat Can Başarır bana ssh_config hakkında tips & tricks verirken aklıma hemen şu soru geldi:
Acaba uzaktaki makineyi ssh üzerinden browse ederken tab-completion olabilirmi?
ya da nasıl olur?
Bash haricinde, ZSH’de bunun mümkün olduğunu sevgili kardeşim Can Burak Çilingir sayesinde biliyordum. Acaba aynısını bash için yapmak mümkün müydü?
Eğer konuya zaten hakimseniz, ssh_config diye birşey biliyorsunuzdur. Genelde bu tarz konfigürasyon olayları hep birbirine benziyor mantık olarak;
System-Wide (yani tüm kullanıcıları ilgilendiren, /etc/ altında genelde)
User Profile (2sadece kullanıcı bazında ~ altında)
Kullanıcı bazlı şeyler genelde $HOME dizini altında oluyor:
$HOME sizin kullanıcınızın home folder’ıdır. Yani sizinle ilgili pek çok şey (Desktop, Müzikler, Videolar vs…) buradadır. Keza ssh ile ilgili şeyler de (eğer kullanıcı bazlı düşünüyorsak) burada olmalıdır. Terminale girip:
gibiyse sorun yok, eğer değilse:
ls -alhG # bsd tabanlı (mac, bsd vs...)
Şeklinde deneyin. Bu, ne var ne yok listelemenize, hatta renkli ve hatta boyutları da anlaşılır bir şekilde listelemenize yardımcı olacak. Eğer ls komutunuzun hep böyle kalmasını isterseniz, ~/.profile’a bir alias eklemeniz lazım.
Eğer $HOMEda .profile yok ise önce oluşturun:
Eğer ~ işaretini yapmakta sorun varsa, Turkish QWERTY PC modunda, ⌃ (alt) + Ü yapın. Sonra, sevdiğiniz bir text editörde bu dosyayı açın:
open -a /Applications/TextEdit.app .profile
Dosyayı açtıktan sonra aşağıdaki bilgiyi ekleyin, kaydedip çıkın programdan. Küçük bir not: Ben text editör olarak [TextMate][textmate] kullanıyorum, belki yazıyı okuyanlarda da yoktur diye standart / default uygulamalardan örnek veriyorum!
Şimdi ya terminali komple kapatıp açacaksınız, ya da:
yazın enter’a basacaksınız. Şimdi ls yaptığınızda tüm detaylarıyla $HOME folder’ını görebilirsiniz. Eğer .ssh diye bir folder yoksa hemen bunu oluşturun ve gereken dosyaları ekleyin:
Şimdi bu config dosyasına, ssh yapmak istediğimiz sunucuya ait bilgileri ekleyeceğiz. Tabii bunun için yine bir text editör ile dosyayı açalım. Açtıktan sonra:
şeklinde uygun bilgileri doldurun. Unutmayın! Bu dosyanın mantığı Key Value şeklinde. Key’den sonra ya bir TAB ya da SPACE koymanız lazım. Ben TAB kullanıyorum.
Örneğin; ip’si 1.2.3.4 olan bir sunucuya, 22. port’dan ssh yapacaksak ve bu sunucuya Sunucum diye bir isim takarsak;
Eğer Port belirtmezseniz sistem bunu otomatik olarak 22 varsayacaktır. Bu dosyada N tane sunucu tanımlaması yapılabilir. Yani:
gibi, istediğiniz kadar sunucu ekleyebilirsiniz. Keza, konfigürasyon bilgisi olarak da, Host, User, Port vs… dışında pek çok direktif de ekleyebilirsiniz. Bu bilgiler nerede? Tabii ki man pagede!
şeklinde. Hemen yeri gelmişken şunu da anlatalım. Uzaktaki makineye bağlanırken sürekli şifre girme derdinden kurtulmak için kendinize bir ssh-key üretebilirsiniz.
Bu ürettiğiniz key’i de uzaktaki makineye eklediğiniz zaman, ssh bağlantısı için birdaha size şifre sorulmaz. Nasıl mı? Terminal’de devam ediyoruz:
Enter’a basar basmaz Generating public/private dsa key pair. şeklinde bir mesaj göreceksiniz. Komut size iki anahtar üretiyor, biri public diğeri de private.
Yani biri ortalıkta dolaşabilen, PUBLIC key, diğeri de sadece sizde olacak olan PRIVATE key. Daha sonra size, bu oluşturulacak anahtarların nereye kayıt edileceği soruluyor. Gördüğünüz gibi bu lokasyon, default olarak, $HOME altında bulunan .ssh/ folder’ı. Örneğin bana sorulan yer: /Users/vigo/.ssh/id_dsa şeklindeydi.
Daha sonra passphrase sorulur. Bu bir tür şifredir ve güvenlik için önemlidir. Bu bakımdan bu alanı boş bırakmadan, hatırlayabileceğiniz bir şifre seçin. Herşey yolunda gittiyse size:
fe:82:ea:3d:c4:..:..:.. user@hostname (uzun olduğu için hepsini yazmadım!)
şeklinde bir görüntü çıkar ve .ssh/ altına baktığınızda iki dosya ile karşılaşırsınız:
işte bu sonu .pub ile biten dosya sizin PUBLIC key’inizdir. Eğer bu dosyayı text editör’le açarsanız karşınıza;
şeklinde devasa bişi çıkar. (Ben uzun olduğu için sadece minik bir kısmını yazdım.) Şimdi yapmanız gereken, uzaktaki makineye bağlanıp, oradaki $HOME’unuza gidip, .ssh/ in altında bulunan authorized_keys dosyasına bu id_dsa.pub dosyasının içinde yazan anahtarı ekleyin. Eğer authorized_keys dosyasını göremezseniz:
şeklinde oluşturun. Karşı makinede, en basit text editörü nano yardımıyla bunu yapabilirsiniz. Dikkat edilmesi gereken şey, bu up-uzun tek bir satır şeklinde olmalı! (word-wrape dikkat edin!)
Kendi tarafınızda elma (cmd + c) kopyalayıp, uzaktaki makinede de elma (cmd + v) ile yapıştırabilirsiniz. Eğer nano kullanmayı bilmeyenler varsa, uzaktaki makineye bağlanınca:
ile nano’yu açın. elma (cmd + v) ile keyinizi yapıştırın, satır sonunda enter yapın. Save edip çıkmak için kntrl + x, sorulan soruya y cevabı ve enter. Hemen test edelim bakalım olmuşmu?
Enter! evet şifre sormadan bağlandınız! ⌃ (kntrl) + D ile bağlantıyı kesebilirsiniz.
Bu kadar açıklamadan sonra, asıl olayımızıa gelelim. Uzak makineyi tamamlama! Aynı ssh komutu familyasından scp ile tanışacağız birazdan. Sistemde default bulunan cp (copy) komutunun secure olanı! Gerekenler:
MacPorts (bu zaten kurulu diye düşünüyorum) ve ilgili portları:
Normalde bash-completion kurulunca zaten pek çok sorun halloluyor. Fakat, sistemin içindeki awk ve sed, bir sebebten dolayı, ssh’i tamamlayamıyor. Bu bakımdan ports’dan gawk ve gsed paketlerini de kurmamız gerekiyor.
sudo port install bash-completion gawk gsed
Eğer bash-completion önceden kuruluysa sadece gawk ve gsedi kurun… Şimdi yapmanız gereken tek şey: ssh [TAB’e basın] config’den ya da /etc/hostsdan otomatik tamamlama başladı bile…
Peki scp? şimdi scp Sunucum1[TAB’e basın] ve basmaya devam edin!
Konu ile ilgili toplam “7” adet bağlantılı makale bulunuyor.
« Ağustos dergileri 16 Ağustos 2009, Pazar
Leopard / Snow Leopard UTF8 - Türkçe sorunu bitmiiiiyoooorrr!!! » 14 Kasım 2009, Cumartesi