SSH Anahtar Doğrulaması Nedir?
SSH bağlantısı sağladığımızda karşılaştığımız parola işleminini daha güvenli ve kolay bir hale getirmek için kullanılan doğrulama yollarından biri olan açık anahtar doğrulamasını kullanmamız daha doğru olacaktır.
Bu doğrulama için açık anahtar ve gizli anahtar oluşturmanız gerekiyor. Kısaca açık anahtar(public key) ile veri şifrelenir ve gizli anahtar(private key) bu veriyi çözer. Veriyi şifreleyen açık anahtar paylaşılabilir ve herkes tarafından okunabilir. Çünkü veri çözülmedikçe anlamlı bir veri gözükmez. Bu yüzden gizli anahtarımız kimseyle paylaşmamız ve kaybetmememiz gereken anahtarımızdır. Sebebi ise gizli anahtarımızı kaybettiğimiz zaman açık anahtarımızda işe yaramaz hale gelir. Aynı zamanda bilgisayarımızdan alınması durumunda, alan kişinin kullanmasını istemediğimizden dolayı aşağıda karşımıza gelen gizli anahtarımıza parola oluşturma işlemini atlamamalıyız.
SSH Anahtarımızı oluşturmak için:
ssh-keygen -t rsa
komutunu kullanmalıyız. Kullandıktan sonra bize oluşturulan anahtarın hangi isimle oluşmasını istediğini soracaktır. Buraya istediğimiz ismi giriyoruz:
hsonmez-rsa
Bu komut "~" dizininin içine varsayılan olarak 2048-bit RSA algoritması ile şifrelenmiş, anahtarımızın saklandığı bir dosya oluşturacaktır.
Eğer dosyanın oluşmasını istediğimiz yolu belirtmek istersek "-f" parametresini kullanabiliriz: (Bu parametreyi kullanırken bize oluşturmak istediğimiz ismi sormayacaktır. Çünkü bu ismi yolu gösterirken belirtiyoruz.)
ssh-keygen -f ~/.ssh/hsonmez-rsa -t rsa
(Burada kullandığımız "-f" parametresi dosya çıktısının bulunduğu yer ve ismini, "-t" parametresi algoritma tipini(dsa|ecdsa|ed25519|rsa) belirlediğimiz parametrelerdir.)
Dizinde iki dosya göreceksiniz:
Gizi anahtarımız(Private key): hsonmez-rsa
Açık anahtarımız(Public Key): hsonmez-rsa.pub
Birisi açık birisi gizli olmak üzere 2 adet dosyamız oluştu. Açık anahtarımızı sunucumuzda "~/.ssh/authorized_keys" dosyasına ekliyoruz ve işlem tamamlanıyor.
Sunucumuza anahtarımızı eklemek için:
ssh-copy-id -i hsonmez-rsa.pub hsonmez@123.321.45.6(Burada kullandığımız "-i" parametresi "identity_file" anlamına geliyor.)
Sunucumuza anahtarı manuel olarak yüklemek istersek:
cat hsonmez-rsa.pub >> ~/.ssh/authorized_keyskomutlarıyla ekleyebiliriz.
Bir daha sunucuya SSH bağlantısı ile bağlanmak istediğimizde gizli anahtarımızı kullanmak için parola belirlemediysek bize parola sormayacaktır. (Eğer gizli anahtarımızı kullanabilmek için parola belirlediysek belirlediğimiz parolayı bizden isteyecektir.)
Belirli bir kullanıcıya anahtar yüklemek istersek:
Eğer SSH Anahtarını kullanmak isteyen kullanıcının parolası yoksa bu bağlantıyı sağlayıp kendi SSH Anahtarını yükleyemeyecektir. Bu yüzden ondan aldığımız SSH Anahtarını bizim manuel olarak yüklememiz gerekiyor. Bunun için aşağıdaki adımları uygulamalıyız:
Önce kullanıcının hesabına geçiş yapmalıyız:
su - hsonmezSonra ".ssh" adında bir dosya oluşturmalıyız: (Bu komutta kullandığımız "-m" parametresin oluşturduğumuz dosyaya yetki ataması yapmamızı sağlar.)
mkdir -m 700 ~/.sshŞimdi elimizdeki açık anahtarı(public key) "~/.ssh/authorized_keys" dosyasını oluşturup içine ekleyelim:
cat hsonmez-rsa.pub >> ~/.ssh/authorized_keysSon olarak "~/.ssh/authorized_keys" dosyasının yetkilerini ayarlayalım:
chmod 600 ~/.ssh/authorized_keysDizin ve anahtarların yetkilerini ayarlamak için:
SSH-Keygen kendi bilgisayarımızdaki "~/.ssh" dizinimizi, açık ve gizli anahtarlarımızı otomatik olarak ayarlıyor fakat ayarları yine de buraya yazıyorum. (Sunucumuzdakini manuel ayarlamamız gerekebilir.)
"~/.ssh" dizininin yetkisi:
chmod 700 ~/.ssh
Gizli anahtar yetkisi:
chmod 600 ~/.ssh/hsonmez-rsaAçık anahtar yetkisi:
chmod 644 ~/.ssh/hsonmez-rsa.pubSunucumuzdaki "~/.ssh/authorized_keys" dosyasının yetkisi:
chmod 600 ~/.ssh/authorized_keyskomutuyla yetkilendirebiliriz.
Eğer anahtarımız "~/.ssh" dizini içindeyse sunucuya bağlanmak için:
ssh hsonmez@123.321.45.6Eğer gizli anahtar "~/.ssh" dizininde değil ise bağlantıyı kurmak için gizli anahtarın bulunduğu dizini "-i" parametresi ile göstermeliyiz.
Eğer aynı sunucuya belirli bir gizli anahtar ile bağlanmak istiyorsak:
ssh hsonmez@123.321.45.6 -i hsonmez-rsakomutularını kullanabiliriz. (Burada kullandığımız "-i" parametresi "identity_file" anlamına geliyor.)
Sözlük:
SSH Key: SSH Anahtarı
Public Key: Açık Anahtar
Private Key: Gizli Anahtar
Identity File: Kimlik Dosyası(Yani SSH Anahtarımız)
No comments