Bilgi işlem sektöründeyseniz özellikle gün içinde bir çok farklı Linux/Unix sunucuya erişiminiz varsa şifre hatırlamak, bunları saklamak, hem zulüm hem de güvenlik endişesi getiriyor. İnsan ister istemez bir süre sonra aynı yada benzer şifreleri kullanmaya başlıyor. Bunları anlatıyorum çünkü SSH Public Key ile kullanıcı doğrulamanın amacını anlatmak nasıl yapıldığını anlatmaktan daha önemli olmalı bence.

SSH Key ile Doğrulama Oluşturma Süreci

SSH Key ile Doğrulama Oluşturma Süreci

Yukarıda bu doğrulama yöntemini kullanmak için yapacağımız aksiyonları akış olarak çizdim.

1. Daha önceden Anahtar Çifti Oluşturulup Oluşturulmadığının Kontrolü

  • Öncelikle Ana sunucuya SSH ile bağlanacağız (sunucuya direk erişiminiz varsa konsol üzerinden de bu işlemi yapabilirsiniz.)
ssh burak@ana_sunucu_host
  • Bağlandığınız kullanıcı için sunucuda daha önce private key oluşturulmuş mu diye kontrol etmek için .ssh klasörüne gidin.
cd ~/.ssh
  • Klasörün içinde id_rsa dosya çiftini görüyorsanız bu sunucuda daha önceden zaten private&public key oluşturulmuş demektir. Bu aşamada private&public key çiftini oluşturma işlemini atlayıp 3. adıma geçebilirsiniz.
Buraks-MacBook-Air:.ssh burakalakus$ ls -al
-rw-------    1 burakalakus  staff   1679 May 23  2015 id_rsa
-rw-r--r--    1 burakalakus  staff    418 May 23  2015 id_rsa.pub

2. SSH Private & Public Key Çifti Oluşturma

  • Ana sunucuya bağlıyken ssh-keygen -t rsa komudunu kullanarak SSH Key çiftimizi oluşturuyoruz. Komut verildikten sonra anahtara bir parola vermemizi isteyecektir. Boş bırakırsanız anahtara parola koruması vermemiş olursunuz. Parola vermenin artısı, anahtar çiftini her kullanmak istediğinizde size ek olarak bir de bu parolayı soracak olmasıdır.
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/burak/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/burak/.ssh/id_rsa.
Your public key has been saved in /home/burak/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 burak@ana_sunucu
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

3. İstemci Makinaya Public Key’i İndirme

  • Ana Sunucuya bağlanmak istediğiniz istemci makinada ssh-copy-id komudunu kullanacağız. Bu komut, ana sunucuya otomatik olarak bağlanıp, public key’i istemci makinaya indirecektir.
ssh-copy-id burak@ana_sunucu

The authenticity of host 'ana_sunucu (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.

Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ana_sunucu' (RSA) to the list of known hosts.

burak@ana_sunucu's password: 

Now try logging into the machine, with "ssh 'burak@ana_sunucu'", 
and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Yukarıda, başarılı bir sürecin çıktısını görüyorsunuz. Bu aşamadan sonra tek yapmanız gereken;

ssh burak@ana_sunucu

Şifre kullanmadan makinaya sorunsuzca bağlandığınızı göreceksiniz.

Geçmiş olsun.