SSH, sunculara uzaktan erişim sağlayarak komut satırında yönetimsel veya işlevsel operasyonları gerçekleştirmede kullanılan bir hizmet protokolüdür.
Çok önceleri kullanılan telnet veya rlogin gibi protokollerden farkı güvenli bir haberleşme ortamı sağlamasıdır. “Güvenli” den kasıt, kullanıcı şifrelerinin ve tüm verilerin şifrelenerek bir uçtan diğer uca iletilmesidir.
Public Key Doğrulaması
Public Key doğrulamasında her kullanıcı public ve private key olmak üzere iki adet şifreye sahiptir. Public key, adından da anlaşılacağı gibi, ortamdaki tüm sistemler tarafından görülebilmektedir. Private key ise sadece anahtarın sahibi tarafından bilinmektedir.
Public key mekanizmasında bilinmesi gereken en önemli şey public ve private key’lerin birbirlerini tamamlayıcı özellikte olmalarıdır. Yani public key ile encrypt edilen bir veri private key ile decrypt edilebilir.
Doğrulama mekanizmasının nasıl işlediğini aşağıdaki şekilde ifade edebiliriz.
- X ve Y, rasgele sayı üretecini kullanarak private key ve public key üretir
- X, Y’nin public key’ini talep eder
- X, Y’ye göndereceği mesajı Y’nin public key’i ile encrypt eder
- Y, X’den encrypted gelen mesajı, kendi private key’i ile decrypt eder ve mesajı alır
- Y, mesajını kendi private key’i ile encrypt ederek X’e gönderir
- X, Y’nin mesajını, Y’nin public key’i ile decrypt ederek mesajı alır
Trust İşlemi
Birden çok sunucu arasında secure veri transferi yapmak veya diğer sunucularda komut çalıştırmak istiyorsanız, SSH aradığınız çözüm olacaktır. Bu operasyonları otomatize etmek için de sunucuların birbirlerine trust ettirilmeleri, yani şifre girmek kerekmeden SSH oturumunun kurulmasına imkan sağlamak gerekir. Bu işlem için aşağıdaki adımları izlemek yeterli olacaktır:
- Öncelikle public/private key çiftini üretmek için aşağıdaki komutu çalıştıralım
ssh-keygen –t dsa –b 1024
- Üretilen publi key’i, şifre girmeden ssh oturumu açmak istediğimiz sunucuya (veya iş istasyonuna) kopyalamamız gerekecektir. Bunun için ssh altyapısını kullanarak dosya transferi gerçekleştiren scp komutunu kullanabiliriz.
scp /root/id_dsa.pub root@diger_sunucunun_host_veya_IPsi:/root/.ssh/
Bu noktada dikkat edilmesi gereken iki nokta vardır.
-
- Birincisi ssh çekilen sunucunun ssh konfigürasyonu, root kullanıcısı ile session açmaya izin vermiyora scp için otorize olamayacaksınız. Karşı sunucunun sshd_config dosyasını değitirebilir veya başka bir kullanıcı için trust işlemini gerçekleştirebilirsiniz.
- İkincisi ise ssh-keygen komutunu çalıştırdığımız konumun /root olduğunu varsaymaktayız. Başka bir konumda çalıştırdı isek üretilen key’lerin konumunu scp yaparken doğru girmeye dikkat etmek gerekir.
- Şimdi sıra karşı tarafa kopyaladığımız key dosyasını authorized_keys dosyasına yazmaya geldi. Bunun için aşağıdaki komutu yazmak yeterli olacaktır.
ssh –l root diger_sunucunun_host_veya_IPsi “cp /root/.ssh/id_dsa.pub /root/.ssh/authorized_keys”
Bu komutu girdikten sonra, her şey yolunda gittiyse, son kez root şifresi gireceksiniz. Sonraki ssh veya scp operasyonlarınızda (ilgili kullanıcı ile, örneğimizde root kullanıcısı) şifre girmek zorunda kalmayacaksınız.
Artık ihtiyacınız olan işlemleri küçük scriptler ile otomatize edebilirsiniz..