SSH Key Tabanlı Giriş (Key Authentication) Nasıl Yapılır?
SSH Key Tabanlı Giriş (Key Authentication) Nasıl Yapılır?
SSH Key Authentication, Linux sunucularına parola kullanmadan, özel (private) ve genel (public) anahtar çiftine dayalı olarak güvenli bağlantı kurma yöntemidir. Bu yöntem, hem güvenlik hem de otomasyon açısından parola tabanlı girişlerden çok daha güvenlidir. Bu rehberde, SSH anahtarlarının nasıl oluşturulacağını, sunucuya nasıl ekleneceğini ve güvenli yapılandırmanın nasıl yapılacağını adım adım anlatıyoruz.
- 1. SSH Key Authentication Nedir?
- 2. SSH Anahtar Çifti Oluşturma
- 3. Public Key’i Sunucuya Aktarma
- 4. SSH Key Dosya İzinlerini Ayarlama
- 5. SSH Bağlantısını Test Etme
- 6. Parola Girişi Devre Dışı Bırakma (Opsiyonel)
- 7. Anahtar Yönetimi (Birden Fazla Kullanıcı)
- 8. Farklı Anahtar Dosyası Kullanma
- 9. SSH Agent Kullanımı
- 10. Güvenlik En İyi Uygulamaları
- Sonuç
1. SSH Key Authentication Nedir?
SSH (Secure Shell) protokolü, ağ üzerinden güvenli uzaktan erişim sağlar. Anahtar tabanlı kimlik doğrulamada, kullanıcı bir özel anahtar (private key) ve genel anahtar (public key) çifti üretir. Sunucu, yalnızca kendisine yüklenmiş olan public key ile eşleşen private key’e sahip istemcilerin girişine izin verir.
2. SSH Anahtar Çifti Oluşturma
Linux veya macOS üzerinde yeni bir anahtar çifti oluşturmak için:
ssh-keygen -t rsa -b 4096 -C "kullanici@sunucu"
-t rsa: RSA algoritmasını belirtir (alternatif: ed25519).-b 4096: 4096-bit uzunlukta güçlü bir anahtar üretir.-C: Anahtar açıklaması (genellikle e-posta veya etiket).
Komut sonrası sistem sizden dosya yolu ve isteğe bağlı bir şifre (passphrase) isteyecektir:
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase):
3. Public Key’i Sunucuya Aktarma
Anahtarlar üretildikten sonra public key’inizi sunucuya gönderin:
ssh-copy-id kullanici@sunucu_ip
Bu komut public key’i otomatik olarak ~/.ssh/authorized_keys dosyasına ekler. Eğer bu komut mevcut değilse, manuel olarak yükleyebilirsiniz:
cat ~/.ssh/id_rsa.pub | ssh kullanici@sunucu_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
4. SSH Key Dosya İzinlerini Ayarlama
SSH güvenliği için dosya izinleri çok önemlidir:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chmod 600 ~/.ssh/id_rsa
Yanlış izinler SSH bağlantısını engelleyebilir. Özellikle ~/.ssh/ klasörü diğer kullanıcılar tarafından okunabilir olmamalıdır.
5. SSH Bağlantısını Test Etme
Bağlantıyı test etmek için:
ssh kullanici@sunucu_ip
Parola sormadan doğrudan giriş yapılabiliyorsa, yapılandırma başarıyla tamamlanmıştır.
6. Parola Girişi Devre Dışı Bırakma (Opsiyonel)
Güvenliği artırmak için parola tabanlı girişleri tamamen devre dışı bırakabilirsiniz:
sudo nano /etc/ssh/sshd_config
Aşağıdaki satırları bulun ve düzenleyin:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM yes
Değişiklik sonrası SSH servisini yeniden başlatın:
sudo systemctl restart sshd
7. Anahtar Yönetimi (Birden Fazla Kullanıcı)
Birden fazla kullanıcının aynı sunucuya erişmesi gerekiyorsa, her kullanıcı kendi public key’ini ~/.ssh/authorized_keys dosyasına eklemelidir. Her satırda bir public key bulunabilir.
8. Farklı Anahtar Dosyası Kullanma
Eğer özel anahtar farklı bir isimde veya konumdaysa, bağlantıda bunu belirtebilirsiniz:
ssh -i ~/.ssh/hostligo_rsa kullanici@sunucu_ip
9. SSH Agent Kullanımı
SSH agent, özel anahtarınızı bellekte tutarak her bağlantı için şifre girmenizi önler:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
10. Güvenlik En İyi Uygulamaları
- RSA yerine ED25519 anahtarlarını tercih edin (daha güvenli ve hızlıdır).
- Her sunucu için farklı anahtar çifti oluşturun.
- İstemci cihaz çalınırsa hemen
authorized_keysdosyasından public key’i silin. - Fail2ban veya UFW ile SSH portunu koruyun.
- Varsayılan 22 numaralı portu değiştirerek brute-force riskini azaltın.
Sonuç
SSH Key Authentication, parola tabanlı girişlere göre çok daha güvenli, hızlı ve yönetilebilir bir kimlik doğrulama yöntemidir. Özellikle otomasyon sistemleri, CI/CD süreçleri ve uzak yönetim operasyonları için kritik öneme sahiptir. Kurumsal ölçekli altyapılarda HostLigo Linux VDS çözümleriyle bu güvenlik yöntemi kolayca uygulanabilir.