Güvenli Kabuk (SSH), uzaktan sistemleri güvenli bir şekilde yönetmek ve erişmek için en yaygın kullanılan araçlardan biridir. Daha az güvenli ve brute-force saldırılarına yatkın olan geleneksel şifre tabanlı kimlik doğrulama yerine, sistem yöneticileri genellikle daha iyi güvenlik, ölçeklenebilirlik ve otomasyon için SSH anahtar tabanlı kimlik doğrulamayı yapılandırır.

Bu kılavuz, ssh-keygen kullanarak SSH anahtarlarını nasıl oluşturacağınızı, bunları ssh-copy-id kullanarak güvenli bir şekilde uzaktan bir sunucuya nasıl kopyalayacağınızı, yapılandırmayı nasıl doğrulayacağınızı ve güvenlik en iyi uygulamalarını takip edeceğinizi açıklar.

SSH Anahtar Tabanlı Kimlik Doğrulamanın Anlaşılması

SSH anahtarları ile kimlik doğrulama, açık-özel anahtar çifti kullanılarak gerçekleşir:

  • Özel Anahtar (id_rsa) → Yerel makinenizde kalır ve korunmalıdır.
  • Açık Anahtar (id_rsa.pub) → Uzak sunucuda ~/.ssh/authorized_keys altında yer alır.
  • Bağlanırken, SSH şifreleri açığa çıkarmadan otomatik olarak kimliğinizi doğrulamak için açık anahtar kriptografisi kullanır.

Bu yöntem daha güvenli ve daha kullanışlıdır, özellikle geliştiriciler, sistem yöneticileri ve otomatik dağıtımlar için.

ssh-keygen ile SSH Anahtarları Oluşturma

Yeni bir SSH anahtar çifti oluşturmak için aşağıdaki komutu çalıştırın:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Açıklanan Seçenekler:

  • -t rsa → Şifreleme algoritmasını belirtir (RSA).
  • -b 4096 → Daha güçlü şifreleme için 4096-bit anahtar kullanır (önerilir).
  • -C → Anahtarı tanımlamak için bir yorum ekler, genellikle e-posta adresiniz veya kullanıcı adınız.

Etkileşimli İstemler:

  • Anahtarı kaydetmek için dosya → Varsayılanı kabul etmek için Enter tuşuna basın:
    ~/.ssh/id_rsa

  • Parola (isteğe bağlı ama önerilir) → Ek bir güvenlik katmanı ekler.
    Ayarlandığında, özel anahtarı kullanırken bunu girmeniz gerekecek.

Uzak Sunucuya Açık Anahtarı Kopyalama (ssh-copy-id)

Anahtarlar oluşturulduktan sonra, açık anahtarınızı uzak sunucuya aktarmak için ssh-copy-id kullanın:

ssh-copy-id user@remote-server
  • kullanıcı → Uzak sunucudaki kullanıcı adı.
  • uzak-sunucu → Uzak makinenin ana bilgisayar adı veya IP adresi.

Bu komut:

  • Açık anahtarınızı (id_rsa.pub) sunucunun:

    ~/.ssh/authorized_keys
  • .ssh dizini ve anahtar dosyası için doğru izinleri otomatik olarak ayarlar.

Alternatif Yöntem (Manuel Kurulum)

Eğer ssh-copy-id mevcut değilse, anahtarı manuel olarak kopyalayabilirsiniz:

cat ~/.ssh/id_rsa.pub | ssh user@remote-server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Bu komut:

  • .ssh dizinini yoksa oluşturur.
  • Açık anahtarınızı ekler.
  • Güvenli izinler ayarlar.

SSH Anahtar Kimlik Doğrulamasını Doğrulama

Her şeyin çalıştığını doğrulamak için:

ssh user@remote-server
  • Doğru yapılandırılmışsa, şifre girmeden oturum açmalısınız.

  • Eğer bir parola ayarlandıysa, bunun için sizden istenecektir.

Güvenlik En İyi Uygulamaları

a) Güçlü Şifreleme Kullanın

  • Şu seçenekleri tercih edin: RSA 4096 veya Ed25519:

    ssh-keygen -t ed25519 -C "your_email@example.com"
  • Ed25519 anahtarları daha küçük, daha hızlı ve daha güvenlidir.

b) Anahtar Dosyaları Üzerinde İzinleri Kısıtlayın

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

SSH, izinler çok açık olduğunda kullanmayı reddedecektir.

c) Parola Kimlik Doğrulamayı Devre Dışı Bırakın (İsteğe Bağlı, Önerilir)

Uzak sunucuda, düzenleyin:

sudo nano /etc/ssh/sshd_config

Ayarla:

PasswordAuthentication no

ChallengeResponseAuthentication no
UsePAM yes

Sonra SSH’yi yeniden başlat:

sudo systemctl restart ssh

d) Parola Yönetimi için SSH Ajanı Kullanın

Her seferinde parolanızı yazmak yerine, ssh-agent kullanın:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

Bu, anahtarınızı oturum için önbelleğe alır.

Yaygın Sorunların Giderilmesi

ProblemOlası SebepÇözüm
Hala şifre istiyorYanlış izinler veya eksik anahtar~/.ssh izinlerini ve authorized_keys’i kontrol edin
“İzin reddedildi” hatasıYanlış kullanıcı adı veya IPDoğru giriş bilgilerini onaylayın
ssh-copy-id bulunamadıAraç eksiksudo apt install openssh-client ile yükleyin
Anahtar yok sayıldıÇok izinli dosya izinlerichmod 600 ~/.ssh/id_rsa komutunu çalıştırın

Sonuç

ssh-keygen ve ssh-copy-id kullanmak, uzaktan sunucuları yönetirken güvenliği ve kullanışlılığı artırır. SSH anahtar kimlik doğrulamasını yapılandırarak, yöneticiler şifre tabanlı girişlerle ilişkili riskleri ortadan kaldırabilir ve güvenli erişimi kolaylaştırabilir.