Linux’te SSH Anahtarları Nerede Saklanır – Ve Bunları Güvenli Bir Şekilde Nasıl Yönetirsiniz
SSH (Secure Shell), uzaktan erişim, güvenli dosya transferleri, otomasyon ve sunucu yönetimi için kullanılan Linux ekosisteminde temel bir araçtır. Çoğu kullanıcı SSH ile ssh komutu aracılığıyla etkileşimde bulunurken, arka planda SSH, kimlik doğrulama için genel ve özel anahtar çiftlerine dayanır – özellikle şifre olmadan giriş, otomasyon ve DevOps uygulamalarının gerekli olduğu ortamlarda.
Varsayılan SSH Anahtar Depolama Yeri
SSH anahtarlarının en yaygın depolandığı yer:
Bu, kullanıcının ana dizinindeki .ssh dizinine atıfta bulunur, örneğin:
Bu dizindeki yaygın dosyalar:
| Dosya | Amaç |
|---|---|
| id_rsa | Varsayılan özel anahtar (RSA) |
| id_rsa.pub | Eşleşen genel anahtar |
| id_ecdsa, id_ed25519 | Diğer özel anahtarlar (ECDSA, Ed25519) |
| id_*.pub | Karşılık gelen genel anahtarlar |
| authorized_keys | Bağlanmaya izin verilen genel anahtarları saklar |
| known_hosts | Sunucu parmak izlerini saklar (host anahtar doğrulaması) |
| config | Kullanıcıya özel SSH istemci yapılandırması |
Anahtarları ssh-keygen ile oluşturursanız, varsayılan olarak burada saklanır, aksi belirtilmedikçe.
Sistem Genelinde SSH Anahtar Yerleri
SSH Sunucu (sshd) Host Anahtarları
SSH daemon tarafından kullanılan sistem genelindeki anahtarlar (sunucu tarafı):
Tipik dosyalar:
| Dosya | Amaç |
|---|---|
| ssh_host_rsa_key | Host özel anahtarı (RSA) |
| ssh_host_rsa_key.pub | Host genel anahtarı |
| ssh_host_ecdsa_key | ECDSA host özel anahtarı |
| ssh_host_ed25519_key | Ed25519 host özel anahtarı |
Bu anahtarlar, sunucuyu istemcilere tanımlamak için kullanılır, kullanıcıları kimlik doğrulamak için değil.
SSH daemon (sshd), bağlantı sırasında host genel anahtarını sunar; istemciler bunu ~/.ssh/known_hosts ile karşılaştırır.
Özel Anahtar Yerleri
SSH anahtarlarını herhangi bir yerden oluşturabilir veya kullanabilirsiniz, ancak yolu belirtmelisiniz:
Ayrıca ~/.ssh/config aracılığıyla birden fazla anahtar yapılandırabilirsiniz:
Anahtarlar Nerede Kullanılır?
Çıkış (İstemci Tarafı)
SSH istemcileri varsayılan olarak ~/.ssh/ dizininde özel anahtarları arar. Uzak bir sunucuya bağlanırken kimlik doğrulamayı başlatmak için kullanılırlar.
ssh, scp, rsync over SSH, git (SSH uzak kullanıldığında)
📌 Giriş (Sunucu Tarafı)
Sunucu, genel anahtarları arar:
Bu dosya, o belirli kullanıcı hesabına giriş yapmasına izin verilen genel anahtarları listeler.
Eğer user_a, user_b olarak bir sunucuya SSH yapmaya çalışırsa, onların genel anahtarı ~user_b/.ssh/authorized_keys içinde bulunmalıdır.
İzinler — Güvenlik İçin Kritik
Doğru izinler:
Yanlış izinler, SSH’nin anahtarlarınızı görmezden gelmesine veya girişleri tamamen reddetmesine neden olabilir.
SSH Anahtarlarını Güvenli Bir Şekilde Yönetmek
Özel anahtarlar oluştururken bir şifre kullanın:
Açık anahtarları önbelleğe almak için ssh-agent kullanın:
- Anahtarları düzenli olarak değiştirin
- Kullanılmayan veya yetim anahtarları “authorized_keys” dosyasından kaldırın
- Her host/proje için ayrı anahtarlar kullanın
- Farklı ortamlar arasında root anahtarlarını kullanmaktan kaçının
Denetim ve Hata Ayıklama
SSH bağlantısı sırasında hangi anahtarın kullanıldığını görmek için:
Bu, hangi kimlik dosyasının denendiğini de içeren ayrıntılı günlükler yazdırır.
Mevcut ajanınızdaki yüklü anahtarları listelemek için:
Bir anahtarı kaldırmak için:
Sonuç
SSH anahtarlarının Linux’ta nerede saklandığını anlamak – ve bunları güvenli bir şekilde yönetmek – sistem yöneticileri, geliştiriciler, DevOps mühendisleri ve çoklu host veya çoklu kullanıcı ortamlarında çalışan herkes için kritik öneme sahiptir.
Kullanıcı anahtarları, host anahtarları ve yetkilendirilmiş anahtarlar arasındaki farkı bilerek şunları yapabilirsiniz:
- Kimlik doğrulama sorunlarını gidermek
- Güvenli otomatik iş akışları oluşturmak
- Ekipler ve sistemler arasında erişimi yönetmek
Üretim sistemlerinde veya bulut platformlarında (örneğin, VPS veya özel sunucular), SSH anahtarlarını yanlış yönetmek ciddi güvenlik açıklarına yol açabilir. En iyi uygulamaları takip ettiğinizden ve erişimi düzenli olarak denetlediğinizden emin olun.
