Linux’te SSH Anahtarları Nerede Depolanır — Ve Bunları Güvenli Bir Şekilde Nasıl Yönetilir
SSH (Secure Shell), Linux ekosisteminin en kritik araçlarından biridir. Sistem yöneticileri, geliştiriciler ve DevOps mühendisleri bunu günlük olarak uzak sunucu erişimi, güvenli dosya transferleri, dağıtım otomasyonu ve altyapı yönetimi için kullanırlar. Çoğu kullanıcı SSH ile basit bir terminal komutu aracılığıyla etkileşime girse de, gerçek güvenlik omurgası SSH anahtar çiftlerinde yatmaktadır — şifresiz kimlik doğrulamayı, otomatik iş akışlarını ve sertleştirilmiş erişim kontrolünü sağlayan kriptografik kimlik bilgileri.
İster tek bir VPS Hosting örneğini yönetiyor olun ister düzinelerce Dedicated Servers arasında erişimi düzenliyor olun, SSH anahtarlarının tam olarak nerede depolandığını — ve bunları nasıl düzgün şekilde yönetileceğini anlamak isteğe bağlı değildir. Bu, temel bir güvenlik gereksinimidir.
Bu kılavuz her şeyi kapsar: varsayılan anahtar depolama konumları, sistem genelinde ana bilgisayar anahtarları, özel konfigürasyonlar, izin gereksinimleri ve güvenli anahtar yönetimi için en iyi uygulamalar.
SSH Anahtarları Nedir ve Neden Önemlidir?
SSH anahtarları, kullanıcıları ve sunucuları doğrulamak için asimetrik kriptografi kullanır. Her anahtar çifti şunlardan oluşur:
- Özel anahtar — istemci makinesinde gizli tutulur, asla paylaşılmaz
- Genel anahtar — kimliği doğrulamak için uzak sunucuya yerleştirilir
Bir sunucuya bağlandığınızda, SSH sunucudaki genel anahtara karşılık gelen özel anahtarı elinde tuttuğunuzu doğrulamak için kriptografik bir el sıkışma kullanır — özel anahtar hiçbir zaman iletilmez. Bu, parola tabanlı kimlik doğrulamadan temelde daha güvenlidir.
Varsayılan SSH Anahtarı Depolama Konumu (Kullanıcı Anahtarları)
Herhangi bir standart Linux kullanıcısı için SSH anahtarları ev klasörü içindeki gizli bir dizinde depolanır:
~/.ssh/Bu tam yolu genişletir:
/home/username/.ssh/Özellikle root kullanıcısı için:
/root/.ssh/~/.ssh/ İçindeki Yaygın Dosyalar
| Dosya | Amaç |
|---|---|
id_rsa | Varsayılan RSA özel anahtarı |
id_rsa.pub | Eşleşen RSA açık anahtarı |
id_ecdsa | ECDSA özel anahtarı |
id_ed25519 | Ed25519 özel anahtarı (önerilen) |
id_*.pub | Herhangi bir özel anahtarın açık anahtar karşılığı |
authorized_keys | Bu hesaba giriş yapmaya izin verilen açık anahtarların listesi |
known_hosts | Daha önce bağlanan sunucuların parmak izleri |
config | Kullanıcıya özel SSH istemci yapılandırması |
ssh-keygen komutunu çalıştırdığınızda, anahtar oluşturma sırasında açıkça farklı bir yol belirtmediğiniz sürece anahtarlar varsayılan olarak bu dizine yazılır.
Sistem Genelinde SSH Anahtar Konumları (Host Anahtarları)
Kullanıcı anahtarlarının ötesinde, SSH daemon (sshd) — sunucu tarafı bileşeni — kendi host anahtarları setini tutar. Bunlar sistem genelinde şurada depolanır:
/etc/ssh//etc/ssh/ içindeki Host Anahtar Dosyaları
| Dosya | Amaç |
|---|---|
ssh_host_rsa_key | RSA host özel anahtarı |
ssh_host_rsa_key.pub | RSA host açık anahtarı |
ssh_host_ecdsa_key | ECDSA host özel anahtarı |
ssh_host_ecdsa_key.pub | ECDSA host açık anahtarı |
ssh_host_ed25519_key | Ed25519 host özel anahtarı |
ssh_host_ed25519_key.pub | Ed25519 host açık anahtarı |
Bu host anahtarları, kullanıcı anahtarlarından farklı bir amaca hizmet eder. Bir istemci ilk kez bir sunucuya bağlandığında, sunucu host açık anahtarını sunar. İstemci bu parmak izini ~/.ssh/known_hosts içinde depolar. Sonraki bağlantılarda, SSH parmak izinin eşleştiğini doğrular — ortadaki adam saldırılarına karşı koruma sağlar.
> Önemli: Host anahtarları SSH sunucusu kurulumu sırasında otomatik olarak oluşturulur. Bunları manuel olarak oluşturmanız gerekmez, ancak denetim ve yedekleme amaçları için nerede bulunduklarını bilmelisiniz.
Özel SSH Anahtar Konumları
Varsayılan ~/.ssh/ dizini ile sınırlı değilsiniz. SSH anahtarları dosya sisteminin herhangi bir yerine oluşturulabilir ve depolanabilir. Varsayılan olmayan bir konumda depolanan bir anahtarı kullanmak için açıkça belirtin:
ssh -i /path/to/custom_key user@hostBirden Fazla Anahtar için ~/.ssh/config Kullanma
Birden fazla sunucu, proje veya kullanıcı hesabını yönetmek, düzgün şekilde yapılandırılmış bir ~/.ssh/config dosyası ile çok daha temiz hale gelir. Bu, hangi anahtarın kullanılacağı da dahil olmak üzere ana bilgisayar başına ayarları tanımlamanıza olanak sağlar:
Host production-server
HostName 203.0.113.10
User deploy
IdentityFile ~/.ssh/production_ed25519
Host staging-server
HostName 203.0.113.20
User deploy
IdentityFile ~/.ssh/staging_ed25519
Host github.com
User git
IdentityFile ~/.ssh/github_keyBu yapılandırma ile ssh production-server çalıştırmak, ek bayraklar olmadan otomatik olarak doğru anahtarı kullanır.
SSH Anahtarlarının Nasıl Kullanıldığı: İstemci vs. Sunucu
Giden Bağlantılar (İstemci Tarafı)
Bir SSH bağlantısı başlattığınızda, SSH istemcisi varsayılan olarak ~/.ssh/ içinde özel anahtarlar arar. Bu anahtarlar sizi uzak sunucuda kimlik doğrulaması yapmak için kullanılır.
SSH istemci anahtarlarını kullanan araçlar şunları içerir:
ssh — doğrudan uzak kabuk erişimi
scp — güvenli dosya kopyalama
rsync — SSH üzerinden dosya senkronizasyonu
git — SSH tabanlı uzak depolar kullanırken
Gelen Bağlantılar (Sunucu Tarafı)
Sunucuda, SSH hangi kullanıcıların bağlanmaya yetkili olduğunu belirlemek için belirli bir dosyayı kontrol eder:
~/.ssh/authorized_keys
Bu dosya satır başına bir ortak anahtar içerir. Her giriş, karşılık gelen özel anahtarın sahibine o kullanıcı olarak oturum açma izni verir.
Pratik örnek: Eğer kullanıcı alice bir sunucuya webadmin kullanıcısı olarak SSH yapmak istiyorsa, Alice’in ortak anahtarı /home/webadmin/.ssh/authorized_keys içinde bulunmalıdır — o sunucudaki Alice’in kendi ev dizininde değil.
Dosya İzinleri — SSH Güvenliği İçin Kritik
Birçok yöneticinin pahalı hatalar yaptığı yer burasıdır. SSH, dosya izinleri konusunda kasıtlı olarak katıdır. İzinler çok açıksa, SSH anahtarlarınızı kullanmayı sessizce reddedecek veya giriş denemelerini tamamen reddedecektir.
Gerekli İzin Ayarları
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/config
İzin Referans Tablosu
Yol
Gerekli İzin
Sekizli
~/.ssh/
Yalnızca sahibi okuma/yazma/yürütme
700
~/.ssh/authorized_keys
Yalnızca sahibi okuma/yazma
600
~/.ssh/id_rsa (özel anahtar)
Yalnızca sahibi okuma/yazma
600
~/.ssh/id_rsa.pub (ortak anahtar)
Sahibi okuma, diğerleri okuma
644
~/.ssh/config
Yalnızca sahibi okuma/yazma
600
İzinleri tek komutla düzeltmek için:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/* && chmod 644 ~/.ssh/*.pub
SSH Anahtarlarını Güvenli Bir Şekilde Oluşturma
Yeni anahtarlar için her zaman Ed25519‘yi RSA yerine tercih edin. Ed25519, daha kısa anahtar boyutları ve daha hızlı performans ile daha güçlü güvenlik sunar.
ssh-keygen -t ed25519 -C "your_email@example.com"
RSA gerektiren eski sistemler için en az 4096 bit kullanın:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
İstendiğinde her zaman bir parola ayarlayın. Bir parola, özel anahtarı diskte şifreler, bu nedenle bir saldırgan dosya sisteminize erişim sağlasa bile, parolasız anahtarı kullanamaz.
ssh-agent ile Anahtarları Yönetme
SSH anahtarını her kullandığınızda parolanızı girmek pratik değildir. ssh-agent bunu, oturumunuzun süresi boyunca şifresi çözülmüş anahtarları bellekte önbelleğe alarak çözer.
ssh-agent’ı Başlatma ve Anahtar Ekleme
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Parolanız bir kez istenir. Bundan sonra SSH işlemleri önbelleğe alınan anahtarı otomatik olarak kullanır.
Yararlı ssh-agent Komutları
# List currently loaded keys
ssh-add -l
# Remove a specific key from the agent
ssh-add -d ~/.ssh/mykey
# Remove all keys from the agent
ssh-add -D
Ortak Anahtarları Uzak Sunuculara Kopyalama
Ortak anahtarınızı uzak sunucuya yüklemenin en kolay yolu ssh-copy-id ile yapılır:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote-host
Bu, ortak anahtarınızı uzak sunucudaki ~/.ssh/authorized_keys dosyasına ekler ve izinleri otomatik olarak ayarlar.
Eğer ssh-copy-id kullanılamıyorsa, bunu manuel olarak yapın:
cat ~/.ssh/id_ed25519.pub | ssh user@remote-host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
SSH Anahtar Sorunlarını Denetleme ve Hata Ayıklama
Ayrıntılı Bağlantı Günlüğü
SSH kimlik doğrulaması başarısız olduğunda, ayrıntılı mod tam olarak neler olduğunu gösterir:
ssh -v user@host
Daha fazla ayrıntı için:
ssh -vvv user@host
Bu çıktı, hangi kimlik dosyalarının denendiğini, aracıya danışılıp danışılmadığını ve kimlik doğrulamanın nerede başarısız olduğunu gösterir.
Sunucu Tarafı SSH Günlüğünü Kontrol Edin
Uzak sunucuda, SSH kimlik doğrulama olayları şu konuma kaydedilir:
# Debian/Ubuntu
tail -f /var/log/auth.log
# CentOS/RHEL/Fedora
tail -f /var/log/secure
# Systems using journald
journalctl -u sshd -f
authorized_keys Dosyanızı Doğrulayın
# Check the file exists and has correct permissions
ls -la ~/.ssh/authorized_keys
# View its contents
cat ~/.ssh/authorized_keys
# Count how many keys are authorized
grep -c "ssh-" ~/.ssh/authorized_keys
SSH Key Security Best Practices
Uygun anahtar yönetimi, dosyaların nerede depolandığını bilmekten daha fazlasını gerektirir. Yönettiğiniz her sistemde bu uygulamaları izleyin:
1. Her Amaç İçin Bir Anahtar Kullanın
Aynı SSH anahtarını farklı ortamlar, istemciler veya projeler arasında asla yeniden kullanmayın. Kişisel erişim, dağıtım otomasyonu ve takım paylaşımlı erişim için ayrı anahtarlar kullanın.
2. Anahtarları Düzenli Olarak Döndürün
SSH anahtarlarını parolalar gibi değerlendirin — özellikle takım üyesi ayrılışından veya şüpheli uzlaşmalardan sonra düzenli olarak döndürün.
3. authorized_keys Dosyalarını Denetleyin
Her sunucuda hangi ortak anahtarların yetkilendirildiğini düzenli olarak gözden geçirin. Eski çalışanlara, kullanımdan kaldırılan otomasyona veya tanınmayan kaynaklara ait anahtarları kaldırın:
# Find all authorized_keys files on a system
find / -name "authorized_keys" 2>/dev/null
4. Parola Kimlik Doğrulamasını Devre Dışı Bırakın
SSH anahtarları yapılandırıldıktan sonra, /etc/ssh/sshd_config içinde parola tabanlı SSH oturumunu tamamen devre dışı bırakın:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
Değişikliklerden sonra sshd’yi yeniden başlatın:
systemctl restart sshd
5. Root Anahtar Kullanımını Kısıtlayın
Root SSH anahtarlarını birden fazla ortamda kullanmaktan kaçının. Bunun yerine bireysel anahtarlarla sudo özellikli kullanıcı hesaplarını kullanın.
6. Ölçek İçin Sertifika Tabanlı Kimlik Doğrulamayı Kullanın
Büyük altyapılar için, bireysel authorized_keys girişlerini yönetmek yerine SSH sertifikalarını (bir SSH Sertifika Yetkilisi aracılığıyla) düşünün. Bu, birçok sunucu arasında erişim yönetimini önemli ölçüde basitleştirir.
Bulut ve Hosting Ortamlarında SSH Anahtarları
Bulut veya yönetilen hosting ortamlarında sunucuları dağıtırken, SSH anahtar yönetimi daha da kritik hale gelir. VPS Hosting sağlayıcıları da dahil olmak üzere çoğu platform, sağlama sırasında bir ortak anahtarı enjekte etmenize izin vererek, hiçbir zaman parola belirlemeden hemen güvenli erişim sağlar.
Birden fazla ortamı yöneten takımlar için, SSH anahtar stratejinizi yapılandırılmış bir VPS Control Panels kurulumu ile eşleştirmeyi düşünün; bu, altyapınız genelinde kullanıcı yönetimini ve erişim kontrolünü basitleştirebilir.
SSH’nin ötesinde güvenli iletişim gerektiren web uygulamaları veya hizmetler çalıştırıyorsanız, sunucu kurulumunuzu düzgün şekilde yapılandırılmış SSL Certificates ile eşleştirmek, yalnızca yönetici erişimi değil, tüm trafik için uçtan uca şifrelemeyi sağlar.
Sunucu altyapılarının yanında Email Hosting kullanan takımlar için, SSH anahtar yönetimi, postaları işleyen sistemleri güvenli hale getirmeye kadar uzanır — tüm sunucular genelinde tutarlı anahtar hijyeninin önemli olmasının bir başka nedeni.
Hızlı Referans: SSH Anahtar Dosya Konumları
Konum
Tür
Amaç
~/.ssh/id_ed25519
Kullanıcı özel anahtarı
İstemci kimlik doğrulaması
~/.ssh/id_ed25519.pub
Kullanıcı açık anahtarı
Sunuculara dağıtılır
~/.ssh/authorized_keys
Yetkili açık anahtarlar
Kimin giriş yapabileceğini kontrol eder
~/.ssh/known_hosts
Sunucu parmak izleri
MITM saldırılarını önler
~/.ssh/config
İstemci yapılandırması
Ana bilgisayar başına ayarlar
/etc/ssh/ssh_host_*
Ana bilgisayar anahtarları
Sunucu kimliği
/etc/ssh/sshd_config
Daemon yapılandırması
SSH sunucusu ayarları
Sonuç
SSH anahtarlarının Linux’te nerede depolandığını anlamak — ve bunları disiplinli bir şekilde yönetmek — sunucularla çalışan herkes için, ister bağımsız bir geliştirici ister büyük bir operasyon ekibinin parçası olun, en önemli becerilerden biridir.
Temel çıkarımları özetlemek gerekirse:
Kullanıcı anahtarları ~/.ssh/ içinde bulunur ve istemci tarafı kimlik doğrulaması için kullanılır
Host anahtarları /etc/ssh/ içinde bulunur ve sunucuyu bağlanan istemcilere tanıtır
authorized_keys gelen erişimi kontrol eder — düzenli olarak denetleyin
Dosya izinleri zorunludur — yanlış izinler SSH’yi sessizce bozar
Ed25519 tercih edilen anahtar türüdür yeni anahtar oluşturma için
Her zaman parolalar kullanın ve günlük anahtar yönetimi için ssh-agentÜretim sistemlerinde — ister Dedicated Servers çalıştırıyor olun ister paylaşılan altyapı — SSH anahtarlarının yanlış yönetilmesi yetkisiz erişim için en yaygın vektörlerden biridir. Bunu doğru yapmak için harcanan zaman yatırımı güvenlik, güvenilirlik ve huzur açısından karşılığını verir.
SSH anahtarlarınıza herhangi bir kritik kimlik bilgisine vereceğiniz kadar özen gösterin. Çünkü tam olarak bunlar.
tasarruf edin