SSH Ayarları

SSH Nedir?

SSH(Secure Shell) uzak sistemlere girebilmek, ora/ya/dan dosya kopyalayabilmek, firewall’lardan geçebilmek için kullanılan bir alt sistemdir(bir işin belli bölümlerini yapmak için birden fazla uygulamanın oluşturduğu küme). Yapılan bu işlemlerle ilgili veriler ve ayarlar $HOME/.ssh dizininde bulunur. (NOT: tunnelling:yerel bilgisayar ve uzak bilgisayar arası tünel açmayı, belli portları birbirine eşlemeyi, bu konunun dışında tuttum)

UNIX  “. dosyaları”

UNIX’te program genelinde kullanılan bayraklar ve belli başlı değerler, Ortam Değişkenlerinde tutulur. Mesela, java CLASSPATH, JAVA_HOME gibi ortam değişkenlerine sahiptir. Program genelinde ortaklaşa kullanılan veriler fazlalaştıkça, bu verileri tutabilmek için “nokta dosyası”dot file oluşturulur. Bir uygulamanın dot file‘ı o uygulamanın Ortam Değişkenlerine göre daha fazla değer tutar.  Bu değerleri kendi belirlediği belli yazım kurallarına(syntax) göre, hatta programlama dili yapılarını kullanarak, tutabilir.

UNIX “. dizinleri”

SSH bir programdan ziyade bir alt sistem olduğu için ayar seçenekleri (configuration options) fazladır. Bu seçenekleri ve ortak verileri daha düzenli tutabilmek için  .ssh isimli “nokta dizini”(dot directory) ayrılmıştır.(NOT: bu dizinin izin değeri, SSH ın düzgün çalışması için, 600 yapılmalıdır. )

SSH config dosyası

$HOME/.ssh/config dosyasında belli bir uzak bilgisayara bağlanmak için kullanılacak SSH ayarları tutulur. Bu ayarlar config dosyalarının yazım kurallarına göre aşağıdaki gibi tutulur.

Host worker
HostName worker.example.com
IdentityFile ~/.ssh/id_rsa_worker
User joeuser

Yukarıdaki blokta, HostName bağlanılacak olan uzak bilgisayarın adresidir. Host bu adrese verilebilecek bir kısa isimdir. (Bu sayede $ ssh worker.example.com şeklinde yazmak yerine $ ssh worker yazılarak bağlanılabilecek.) Sonraki iki seçenek giriş işlemi sırasında kullanılacak olan kimlik bilgilerini(Credentials – Authentication Info) belirtir. IdentityFile Host(Uzaktaki Bilgisayar) ile Client(Yerel Bilgisayar) arasında yapılacak olan güvenli bağlantıda kullanılacak olan Private Key‘idir.

Başka bir uzak bilgisayar için farklı bir ayar belirtilmek istendiğinde, bir satır boşluktan sonra bu yazı bloğu yeni ayarlarla tekrar yazılmalıdır.

Genel ayarlar bir defa burada belirtildikten sonra aşağıdaki gibi, her bağlantı işlemi için,

ssh joeuser@worker.example.com -i ~/.ssh/id_rsa_worker

yazmak yerine,

ssh worker

yeterli olacaktır.

config dosyasındaki diğer bir kullanışlı seçenek, ControlMaster‘dır. Bu seçenek, aşağıdaki gibi ayarlandığında, belli bir Host‘a yapılacak olan birçok SSH oturumunun, aynı bağlantıyı yani aynı bağlantı ayarlarını kullanabilmesi sağlanır. Dolayısıyla, bir host’a bir defa bağlanıldıktan sonra ona yapılan diğer bağlantılarda şifre sorulmayacaktır.

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

Yukarıda “*” ControlMaster’ın auto değerinin bağlanılacak bütün Host‘lar için geçerli olacağını gösterir.

Bunu yapmak için, belli bir host için bir oturum başladığında, SSH önce, bu host için yapılmış, paylaşılan bir bağlantı arar, yoksa yeni bir bağlantı yaratır. ControlPath, bir bağlantının bapaylaşabilmek için bir control socket ini yaratır ve bunu saklar.  ControlPath in değeri çözüldüğünde(resolving, evaluation) bir dosyanın yolunu gösterir.  Yeni oluşturulan control socket burada saklanır.  Dosyanın ismi

master-joeuser@worker.example.com:22

gibidir. Saklanan her control socket için bu şekilde dosyalar oluşturulur. Belli bir host‘a yapılan tüm bağlantılar kesildiğinde bu bağlantıların paylaştığı control socket silinir. Dolayısıyla, herhangi bir anda;

ls ~/.ssh denirse, o anda bağlanılmış olan tüm host‘lar görülebilir.

Ayar bloğundaki %r, %h, %p; ssh config dosyasının kendi dilinin yazım özellikleridir. %r, (r)emote kullanıcı adına; %h, bağlanmak istenen uzaktaki bilgisayar adına, (h)ostName; %p, bağlantı için kullanılacak (p)ort numarasına referans verir. (NOT: %p yerine, yerel bilgisayarda SSH bağlantısı açılıyorsa, %l, (l)ocalhost, kullanılabilir.)

Yazının geneli, Speaking UNIX: Best-Kept Secrets of UNIX Power Users baz alınarak yazılmıştır.

Güzel Sözler

Patience: Think big – implement small. [Sabır: Büyük Düşün – Ufak ufak yapmaya başla 🙂 ]

If not now, then when? [Şimdi değilse, ne zaman?]

Advertisements

Leave a comment

Filed under UNIX

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s