Parolasız ssh bağlantısı
Jan 15, 2012 · 2 minute read · Commentslinux
Eger paronayak biriyseniz parolalarınızı özel karakterler kullanarak, her hesap için farklı parolalar kullanarak o hesapları güvenli hale getirmeye çalışırsınız ama her seferinde bu parolaları hatırlamak ve yazmak zorunda kalırsınız ve birde bu işi sık sık yapıyorsanız uzun parolalar ölüm gelmeye başlar. Şimdi ssh ile uzak bilgisayarınıza parola gerekmeden nasıl bağlanabilirsiniz onu görelim :)
SSH bağlantılarında ya bağlantı için ya bir kullanıcı ve parola gerekir yada parola yerine asimetrik anahtar çiftleri kullanılabilir.
Public key ile kimlik doğrulama aşağıdaki resimde gösterildiği gibi oluyor(Resmi DigitalOcean’dan aldım)
Ilk olarak kullanıcı(ssh client) ssh bağlantısı kuracağı bilgisayara(ssh server) bağlanıyor.
Server kullanıcıya random bir mesaj gönderiyor
Client gönderilen mesajı kendi private keyi ile şifreleyip server a geri gönderiyor.
Server daha önceden sunucuya yüklenmiş olan kullanıcının public keyi ile mesajı çözüp daha önceden gönderdiği mesaj ile karşılaştırıyor. Eğer mesaj aynı ise server kullanıcının bağlanmasına izin veriyor ve bağlantı kuruluyor.
Public key authentication anlaşıldıysa şimdi özel ve açık anahtarımızı nasil oluşturacağız onu anlatmaya çalışayım.
SSH bağlantısı için RSA key pair oluşturmak :
$ ssh-keygen
Eger özel bir yol belirtmediyseniz ev dizininizdeki .ssh dizininde id_rsa ve id_rsa.pub adında iki dosya oluşturulmuş olucaktır. Bu dosyalardan id_rsa dosyası sizin private(özel) anahtarınız oluyor bu dosyayı kimseye göndermeyin ve güvenmediğiniz yerlerde barındırmayın. id_rsa.pub ise sizin public(açık) anahtarınız oluyor.Biz bu anahtarı ssh bağlantısı yapacağimiz pc ile paylaşacağız. Şimdi public anahtarımızı ssh bağlantısı kuracağımız pc ye kopyalayalım.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub kullanici@uzak_ip
Bu komut bizim public anahtarımızı uzak bilgisayarın izinverilen anahtarlar listesine(~/.ssh/authorized_keys
dosyasına) ekleyecektir. Artık uzak bilgisayarınıza parola girmeden giriş yapabilirsiniz.
$ ssh kullanici@uzak_ip
Parola kullanarak ssh login olma özelliğini kapatma
Uzak makinamiza parola ile giriş yapılabiliyor olması kötü niyetli kişilerin brute force atak ile parolanızı bulmalarına olanak sağlar.
Bunun önüne geçmek için parola ile login özelliğini kapatıp sadece izin verilen anahtarlara sahip kişilerin giriş yapabilmesini sağlayabiliriz.
Yukarıda public keyimizi uzak makinın izin verilen anahtarlar listesine eklemiştik. Şimdi ise parola ile login olma özelliğini kapatalım.
Uzak makinaya bağlanıp /etc/ssh/sshd_config
dosyasını açın ve PasswordAuthentication yes
yazan satırı bulup PasswordAuthentication no
olarak değiştirip ssh sunucusunu yeniden başlatın.
Artık uzak makinaya ssh ile bağlanırken kullanıcının şifresi doğru girilse bile bağlanılamayacaktır.
Parola ile giriş yapılabilip yapılamadığını şu şekilde test edebilirsiniz.
$ ssh -o PubkeyAuthentication=no kullanici@uzak_ip
Ayrıca Bakınız: fail2ban