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 kullanıcı_adi ile devam edeceğiz. Lütfen bu kullanıcının sunucuda hazır olduğundan emin olun.

 

Adım 1 — 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 (/kullanıcı_adi/.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 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. Komut sonu aşağıdaki gibi olacak.

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

 

Adım 2: Anahtarı CentOS Sunucuya Aktarma

Oluşturduğumuz anahtarı sunucuya aktarmak için ssh-copy-id programı 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 kullanıcı_adi@Sunucu_IP

komutunu girdiğinizde, .ssh gizli dizinindeki genel anahtarı sunucunuzdaki kullanıcı ana dizinindeki .ssh dizinine kopyalayacaktı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 daha önce oluşturduğunuz şifreyi soracak. Şifrenizi girin ve devam edin.

/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 girerken karakter görünmeyecektir. Herşey tamam olduğunda program ~/.ssh/id_rsa.pub dosyasının içeriğini sunucudaki ~/.ssh/authorized_keys dosyasına yazacaktır.

Eğer yerel bilgisayarda ssh-copy-id programı yoksa işlemleri elle yapmak zorundasınız. Bunun için oluşturduğunuz id_rsa.pub dosyasının içeriğini authorized_keys dosyasına yazacağız.

ssh kullanıcı_adi@Sunucu_IP (şifrenizle sunucuya bağlanın)
sudo mkdir -P ~/.ssh/authorized_keys
sudo nano .ssh/authorized_keys
sudo chmod 700 .ssh
sudo chmod 600 .ssh/authorized_keys

Bu komutlarla sunucuya bağlandık, kullanıcı_adi ana dizini altında .ssh klasörünü ve authorized_keys dosyasını oluşturduk. id_rsa.pub dosyasının içeriğini authorized_keys dosyasına yazdık ve yetkilendirmeleri ayarladık.

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ıp ssh config dosyasını düzenleyeceğiz.

sudo nano /etc/ssh/sshd_config

ile config dosyasını açın ve aşağıdaki satırları bulup “no” olarak düzeltin.

...
PermitRootLogin no
PasswordAuthentication no
...

Değişikliklerin aktif olması için SSH süreci yeniden başlatılmalı.

sudo systemctl restart sshd

Ekstra güvenlik için, mevcut oturumu kapatmadan yeni bir pencereden sunucuya bağlanın. Sorunsuz şekilde bağlandıysa oturumu kapatabilirsiniz.