Linux üzerinde SSH Key kurulumunu anlatmadan önce SSH sisteminin ne olduğundan bahsedelim. SSH (Secure Shell), güvenli veri iletimi amacıyla şifrelenmiş bir ağ protokolüdür.
SSH ile birbirine bağlanmış iki bilgisayar arasındaki veri aktarımı bu şifrelenmiş, güvenli ağ protokolü üzerinden yapılır. Bu yapıda, “gizli (private key)” ve onu tamamlayan “açık (public)” olmak üzere iki anahtar bulunur. Kullanıcı “gizli” anahtarını bağlanmak için kullanacağı sistemde, “açık” anahtarını da bağlanacağı sistemde bulundurur. Bağlantı sırasında bu iki anahtarın eşleşmesiyle, sisteme giriş yapılmış olur. Bu sayede sunucu şifreleri paylaşılmadan, sadece sisteme girmesi gereken kullanıcıların public keyleri eklenerek giriş izni verilebilir. Önemli faydalarından biri de kullanıcı adı/şifre adımını ortadan kaldırması ve otomatik giriş yapılabilmesi sayesinde birden cok sunucuyu yönetmekteki güvenlik sorunlarını azaltmasıdır. Aynı zamanda uzaktan dosya transferi, otomatik yedekleme, scriptlerin çalıştırılması gibi adımları da güvenli bir şekilde gerçekleştirmenizi sağlar.
SSH Servisinin Kurulumu
Kurulum sırasında SSH servisi eklenmediyse aşağıdaki komut yardımıyla openSSH kurulur;
sudo apt-get install openssh-server
sudo apt-get install openssh-client
Servis kurulduktan sonra aşağıdaki komutla bir SSH Key çifti oluşturulur. Bu anahtarlardan “açık (public key) olanı bağlanılacak servera kaydedilecektir. Public key farklı sunuculara bağlanmak için dağıtılabilir. “Gizli (private key) ise bağlanacak kullanıcı tarafından saklanması ve public key’ i eşlediği için paylaşılmaması gereken anahtardır.
ssh-keygen -t rsa
Bu komutu çalıştırdıktan sonra, sizden Private Key icin bir konum isteyecektir. Bu konumu default haliyle birakmak icin enter’ a basıp gecebilirsiniz. Daha sonra bir Private Key şifresi ister. Bu aşamada dilerseniz şifre kontrolü olmadan sadece iki anahtarın eşleşmesi yöntemiyle giriş yapabilir, ya da iki anahtar eşleştikten sonra bir de şifre tanımlayabilirsiniz. Artık private ve public anahtarlarınız oluşmuş durumda.
Private Key: /root/.ssh/id_rsa dosyası, Public Key: /root/.ssh/id_rsa.pub dosyasıdır. Anahtarları oluşturduktan sonra authorized_keys isimli text dosyayı oluşturup, sunucuya bağlanma yetkisi olan public key’ leri bu text dosyasının içine atacağız. Ama önce dosyayı kullanılır hale getirmek için sshd_config dosyamızı editleyeceğiz. Nano editörüyle açılan sshd_config dosyasının aşağıdaki satırının başındaki # işaretini kaldıracağız.
sudo nano /etc/ssh/sshd_config
AuthorizedKeysfile %h/.ssh/authorized_keys
Artık publik key dosyamızı kopyalararak authorized_keys dosyasını oluşturabiliriz;
cp id_rsa-pub authorized_keys
Sunucunuzda oluşturduğunuz authorized_keys dosyasının içinde “ssh-rsa xxxxx” ile başlayan satır sizin public key’ inizdir. Bu sunucuya bağlanması gereken diğer kullanıcılar için de aynı dosyada alt satıra geçip “ssh-rsa” ile başlayarak public keyi kopyalayabilirsiniz. Burada dikkat edilmesi gereken konu public keyin tek satır halinde yazılması gerektiğidir. Son olarak chmod ile ssh dosya ve klasörlerinin yetkileri tanımlanır.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Artık sunucunuz Private Key ile şifre sormadan bağlanmaya açılmıştır.
Sunucuyu Sadece SSH ile Erişilebilecek Hale Getirme
Bu aşamadan sonra sunucunuzda password kontrolünü kapatarak, sadece anahtarla girişi aktif hale getirebilirsiniz. Bunun için SSH konfigurasyon dosyasında küçük bir değişiklik yapmak gerekiyor.
sudo nano /etc/ssh/sshd_config
Nano editörüyle açılan sshd_config dosyasındaki aşağıdaki satırın başındaki # işaretini kaldırıp “Yes” olan varsayılan değeri “No” ile değiştireceğiz.
PasswordAuthentication No
Bu işlemin ardından sunucunuz sadece ssh key ile giriş yapan uzak kullanıcıları kabul edecektir. Bu sayedebrute force ile root şifresini kırma girişimleri de engellenmiş olacaktır.
Putty
Putty, Linux sunucularımıza uzaktan bağlantı için kullanabileceğimiz açık kaynaklı bir ssh/terminal programıdır. Bu program sayesinde Private Key ile sunucumuza bağlantı kurabiliriz.
Bunun için yapmamız gereken Host Name yerine sunucu ip adresini yazdıktan sonra, o sunucuda bulunan Public Key’ e karşılık gelen Private Key dosyasını “Connection > SSH > Auth” sekmesindeki “Private key file for authentication” alanında göstermek. Bu işlem adımlarından sonra sunucunuza Private Keyiniz ile bağlanabileceksiniz.
Hepsi bu kadar. LimonHost güvenli günler diler.