Linux’te ssh-copy-id ve ssh-keygen komutlarını nasıl ve neden kullanacağınız.
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_rsaParola (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-serverDoğ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:
Ed25519 anahtarları daha küçük, daha hızlı ve daha güvenlidir.
b) Anahtar Dosyaları Üzerinde İzinleri Kısıtlayın
chmod 700 ~/.sshchmod 600 ~/.ssh/id_rsachmod 644 ~/.ssh/id_rsa.pubSSH, 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_configAyarla:
PasswordAuthentication no
ChallengeResponseAuthentication noUsePAM yesSonra SSH’yi yeniden başlat:
sudo systemctl restart sshd) 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_rsaBu, anahtarınızı oturum için önbelleğe alır.
Yaygın Sorunların Giderilmesi
| Problem | Olası Sebep | Çözüm |
|---|---|---|
| Hala şifre istiyor | Yanlış izinler veya eksik anahtar | ~/.ssh izinlerini ve authorized_keys’i kontrol edin |
| “İzin reddedildi” hatası | Yanlış kullanıcı adı veya IP | Doğru giriş bilgilerini onaylayın |
| ssh-copy-id bulunamadı | Araç eksik | sudo apt install openssh-client ile yükleyin |
| Anahtar yok sayıldı | Çok izinli dosya izinleri | chmod 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.


