SSH sunucular arasında ağ bağlantılarını güvenli hale getirmek için tasarlanmış bir protokoldür. SSH taraflar arasındaki bağlantıyı şifreler ve host ile sunucu arasında terminal erişimi sağlar. Terminal bağlantısı için kimlik doğrulama işlemi yapılır ve bu doğrulama işlemi genellikle şifre tabanlıdır. Ancak şifre tabanlı kimlik doğrulamanın bazı tehlikeleri vardır. Brute force saldırıları ile parola tahmin edilebilir ve sunucuya erişim sağlanabilir. Bu işleri daha güvenli hale getirmek için key tabanlı kimlik doğrulaması kullanılabilir. Sistemlere girişlerde veya toplu işlemlerde çok daha güvenli ve pratiktir.
Key Çiftleri Oluşturulması
Asimetrik kriptografi anahtarında birbirlerinin farklı olması durumunda birbirlerini tamamlamaları için key çiftleri kullanılır. Keylerden birisi public diğeri private olarak isimlendirilir. Private key sadece key sahibi tarafından bilinir.

2048 bitlik key çifti tabanlı bir RSA algoritması oluşturduk. Uzun key boyutu kadar güvenlidir. Key çiftimizi parola ile koruyabiliriz ancak çoğu durumda bu pratik değildir. Key çiftimiz varsayılan kullanıcılar için ana klasörlerinde .ssh dosyasındadır.
SSH konfigürasyonuyla çalışırken root yetkisine ihtiyaç vardır. Root ayrıcalıklarını almanın en iyi yolu aşağıdaki komutu kullanmaktır.
$ sudo su
Uzak Sunucuya Key Eklenmesi
Şimdi kullanacağımız anahtarımızı bir kullanıcı için uzaktaki bir sunucuya ekleyelim.

SSH key kullanıcısı, ip adresi 192.168.122.137 olan uzak sunucudaki root kullanıcısına anahtarımızı eklemek için ssh-copy-id komutunu kullanıyoruz. Anahtarımızı ekledikten sonra parola / şifre girmeden uzaktaki sunucuya giriş yapabiliriz.

SSH Yapılandırmasında Parola Tabanlı Kimlik Doğrulamayı Devre Dışı Bırakmak
Bu adımlardan sonra ssh sunucusu için parola tabanlı kimlik doğrulamasını devre dışı bırakabiliriz.
$ vim /etc/ssh/sshd_config
Sshd_config dosyasını açıp ve PasswordAuthentication ve PermitRootLogin satırını aşağıdaki gibi değiştirelim.
PasswordAuthentication no
PermitRootLogin without-password
SSH Sunucu Yapılandırması
Yeni yapılandırma ile yüklemek için SSH sunucusu yeniden başlatılır.
$ systemctl restart ssh