SSH key kullanımı normal şifre ile yapılan bağlantılardan çok daha güvenli olduğu için bu kılavuzu dikkatle okuyup uygulamanızı öneriyorum. İşlemlere sudo yetkisine sahip örnek pandora kullanıcısı ile devam edeceğiz. Lütfen bu kullanıcı adını kendi sunucunuzda değiştirdiğinizden emin olun.

RSA Anahtar Çifti Oluşturma

ssh-keygen     # 2048 bit key
ssh-keygen -b 4096  # 4096 bit key

Varsayılan olarak, ssh-keygen komutu 2048-bit RSA anahtar çifti oluşturacaktır ki çoğu kullanım için yeteri kadar güvenlidir ama siz de benim gibi ileri seviye güvenliğe önem veriyorsanız, 4096-bit oluşturabilirsiniz. Bunun için komutun sonuna -b 4096 parametresini eklemeniz yeterli olacaktır. Kalan işlemler tamamen aynıdır.

Komutu çalıştırdığınızda aşağıdaki çıktıyı göreceksiniz:

Generating public/private rsa key pair.
Enter file in which to save the key (/pandora/.ssh/id_rsa):
Press ENTER to save the key pair into the .ssh/ subdirectory in your home directory, or specify an alternate path.

Bu kısımda bir değişiklik yapmadan ENTER ile devam edin. Devamında sizden bir passphrase (özel anahtar şifresi) oluşturmanız istenecek.

Enter passphrase (empty for no passphrase):

Oluşturacağınız anahtarı şifresiz de kullanabilirsiniz ama ekstra güvenlik için özel bir şifre belirlemenizi tavsiye ediyorum. Şifrenizi girdiğinizde aşağıdaki komut sonu detayları gelecek.

Your identification has been saved in /pandora/.ssh/id_rsa.
Your public key has been saved in /pandora/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 pandora@Sunucu_IP
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

Burada id_rsa özel anahtar (private key) ve id_rsa.pub ise genel anahtar (public key) dosyasıdır. Özel anahtarın mutlaka yedeğini alın ve güvenli bir yerde tutun.

Anahtarı CentOS Sunucuya Aktarma

Oluşturduğumuz genel anahtarı (id_rsa.pub) sunucuya aktarmak için ssh-copy-id programını kullanacağız. OpenSSH paketine dahil, hayat kurtaran bir yazılımdır. Tek işlevi genel anahtarı doğru yere kopyalamak ve sunucuya erişiminizi hazır etmektir.

ssh-copy-id kullanici-adi@Sunucu_IP

komutunu girdiğinizde, program yereldeki .ssh gizli klasöründen genel anahtarı alıp sunucunuzdaki kullanıcı ana dizinindeki .ssh dizinine kopyalayacaktır. Burada kullanıcı-adi sunucudaki kullanıcı adınızla aynı olmalıdır.

Komut çıktısı şu şekildedir:

The authenticity of host 'Sunucu_IP (Sunucu_IP)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)?

Bu uyarı mesajı henüz sunucunun yerel bilgisayarımızı tanımadığını gösteriyor. Tek seferlik “yes” demeniz yeterlidir. Aynı anahtarı kullanmaya devam ettiğiniz sürece, bu uyarı mesajını bir daha görmeyeceksiniz.

Program kopyalama işlemine geçmeden önce, size sunucudaki kullanıcı şifrenizi soracak. Şifrenizi girin ve devam edin. İşimiz bittiğinde, sunucuya bağlanmak için bir daha şifre kullanmayacaksınız.

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
kullanici_adi@Sunucu_IP's password:

Şifrenizi girmenizle birlikte, program ~/.ssh/id_rsa.pub genel anahtarının içeriğini sunucudaki ~/.ssh/authorized_keys dosyasına yazacaktır.

Tebrikler! Artık oluşturduğunuz anahtar çifti ile sunucuya sorunsuz bağlanıp işlem yapabilirsiniz. İleri seviye güvenlik için sunucuya şifre ile bağlanmayı iptal etmemiz gerekiyor. Aynı zamanda root erişimini de kapatacağız. Sudo yetkilerine sahip olduğunuz sürece root kullanıcısına ihtiyacınız olmayacak.

Sunucuya bağlanıktan sonra, ssh config dosyasını düzenleyelim:

ssh pandora@sunucu_ip
sudo nano /etc/ssh/sshd_config

config dosyasında aşağıdaki satırları bulun, satır başlarındaki # işaretini kaldırıp no olarak düzeltin.

...
PermitRootLogin no
PasswordAuthentication no
...

Artık sunucuya kullanıcı ve şifre kombinasyonu ile bağlantı kurulamaz ve sadece pandora kullanıcısı yetkili özel anahtarı ile bağlanabilir. Değişikliklerin aktif olması için SSH süreci yeniden başlatılmalıdır.

sudo systemctl restart sshd

Mevcut oturumu kapatmadan önce, mutlaka yeni bir pencereden sunucuya bağlanın. Sorunsuz şekilde bağlandıysa oturumu kapatabilirsiniz.