Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
DNS İşletim sistemleri Linux

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

DosyaAmaç
id_rsaVarsayılan RSA özel anahtarı
id_rsa.pubEşleşen RSA açık anahtarı
id_ecdsaECDSA özel anahtarı
id_ed25519Ed25519 özel anahtarı (önerilen)
id_*.pubHerhangi bir özel anahtarın açık anahtar karşılığı
authorized_keysBu hesaba giriş yapmaya izin verilen açık anahtarların listesi
known_hostsDaha önce bağlanan sunucuların parmak izleri
configKullanı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ı

DosyaAmaç
ssh_host_rsa_keyRSA host özel anahtarı
ssh_host_rsa_key.pubRSA host açık anahtarı
ssh_host_ecdsa_keyECDSA host özel anahtarı
ssh_host_ecdsa_key.pubECDSA host açık anahtarı
ssh_host_ed25519_keyEd25519 host özel anahtarı
ssh_host_ed25519_key.pubEd25519 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@host

Birden 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_key

Bu 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
  • Anahtarları döndürün ve denetleyin düzenli güvenlik hijyeninizin bir parçası olarak
  • Ü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.