🔐 CentOS’ta SSH Anahtarlarıyla Güvenli Giriş
Bu rehberde, CentOS işletim sistemi kurulu bir sunucuda parolasız, güvenli ve hızlı bağlantı kurmayı öğreneceksiniz.
SSH anahtar çifti oluşturacak, genel anahtarı sunucuya aktaracak ve parola girişini devre dışı bırakacaksınız.
Bu yöntem, brute-force saldırılarına karşı güçlü bir savunma sağlar ve yönetimi kolaylaştırır.
💡 Bu Rehberde Ne Öğreneceksiniz?
- Yerel bilgisayarda RSA anahtar çifti oluşturmayı
- Genel anahtarı CentOS sunucusuna kopyalamayı
- SSH anahtarıyla parolasız oturum açmayı
- Parola tabanlı girişi tamamen devre dışı bırakmayı
1️⃣ RSA Anahtar Çifti Oluşturma
SSH anahtarları, kimlik doğrulamanın en güvenli yöntemlerinden biridir.
İlk adım olarak kendi cihazınızda RSA anahtar çifti oluşturacağız.
A. ssh-keygen Komutunu Çalıştır
ssh-keygen
➡️ Bu komut 2048 bitlik RSA anahtar çifti oluşturur. İsterseniz daha güçlü bir anahtar için:
ssh-keygen -b 4096
B. Anahtar Konumunu Seç
Komut sizden bir dosya konumu isteyecek:
Enter file in which to save the key (/home/kullanici/.ssh/id_rsa):
ENTER’a basarak varsayılan dizinde kaydedebilirsiniz.
C. Güvenli Parola (Passphrase) Ekle
Enter passphrase (empty for no passphrase):
🔒 Parola girmek isteğe bağlıdır ama şiddetle önerilir. Gizli anahtarınız çalınsa bile, parola olmadan kullanılamaz.
D. Anahtar Dosyaları
Oluşan iki dosya:
~/.ssh/id_rsa → Gizli anahtar (kesinlikle paylaşma)
~/.ssh/id_rsa.pub → Genel anahtar (sunucuya gönderilecek)
💬 Önemli Not: Aynı isimde anahtar varsa üzerine yazmak eski erişimleri iptal eder. Dikkat et!
2️⃣ Genel Anahtarı Sunucuya Aktarma
Genel anahtarın (id_rsa.pub) sunucudaki ~/.ssh/authorized_keys dosyasına eklenmesi gerekir. Bunu üç farklı yöntemle yapabilirsin 👇
🅐 ssh-copy-id ile Otomatik Kopyalama (Önerilen)
ssh-copy-id kullanici@sunucu_ip
Bu komut genel anahtarını sunucuya kopyalar. İlk bağlantıda “yes” yazıp devam et, ardından parola gir.
Number of key(s) added: 1
Now try logging into the machine with: ssh 'kullanici@sunucu_ip'
Artık parolasız giriş yapabilirsin:
ssh kullanici@sunucu_ip
🅑 SSH + Pipe Kullanımı
ssh-copy-id yoksa alternatif olarak:
cat ~/.ssh/id_rsa.pub | ssh kullanici@sunucu_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Bu komut, .ssh dizinini oluşturur ve anahtarını authorized_keys dosyasına ekler.
🅒 Manuel Kopyalama (Konsoldan)
Sunucuya manuel erişimin varsa:
Yerelde anahtarı görüntüle:
cat ~/.ssh/id_rsa.pub
Sunucuda .ssh dizinini oluştur:
mkdir -p ~/.ssh
Anahtarı authorized_keys dosyasına ekle:
echo "GENEL_ANAHTAR_ICERIGI" >> ~/.ssh/authorized_keys
İzinleri ayarla:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Eğer root hesabından başka kullanıcı için yaptıysan:
chown -R kullanici:kullanici ~/.ssh
✅ Not: İzinler çok açık olursa SSH anahtarını reddeder. “Permission denied (publickey)” hatası genelde buradan kaynaklanır.
3️⃣ SSH Anahtarlarıyla Giriş Yapma
Artık parolasız giriş zamanı 👇
ssh kullanici@sunucu_ip
İlk bağlantıda kimlik doğrulama uyarısı gelebilir:
The authenticity of host '203.0.113.1' can't be established.
Are you sure you want to continue connecting (yes/no)? yes
“yes” yazıp ENTER’a bas. Eğer anahtar oluştururken parola belirlediysen, şimdi girmen istenir. Başarılı giriş sonrası direkt shell oturumu açılır.
4️⃣ Parola ile Girişi Kapatma (SSH Hardening)
⚠️ Kritik Uyarı: Bu adımı uygulamadan önce SSH anahtarıyla giriş yaptığın hesabın sudo yetkisine sahip olduğundan emin ol. Aksi halde sunucuya tekrar erişemezsin.
Sunucuya bağlan:
ssh kullanici@sunucu_ip
SSH yapılandırma dosyasını aç:
sudo nano /etc/ssh/sshd_config
Şu satırı bul ve düzenle:
PasswordAuthentication no
Satırın başındaki # işaretini kaldır.
Dosyayı kaydet ve SSH servisini yeniden başlat:
sudo systemctl restart sshd
Yeni bir terminal aç ve test et:
ssh kullanici@sunucu_ip
Her şey sorunsuzsa artık sistem sadece anahtar tabanlı girişe izin verir.
❓ Sıkça Sorulan Sorular (SSS)
1. SSH anahtarımı kaybedersem ne olur?
Yeni bir anahtar üretip sunucudaki authorized_keys dosyasına yeniden eklemelisin.
2. SSH anahtarları neden daha güvenli?
2048 veya 4096 bitlik kriptografik dizeler brute-force ile kırılamaz, parolalara göre binlerce kat daha güçlüdür.
3. authorized_keys izinleri neden önemli?
Dosya herkes tarafından yazılabilir durumdaysa SSH servisi bunu reddeder.
4. sshd nedir?
SSH Daemon’dur; arka planda bağlantıları yöneten servistir. CentOS’ta systemctl restart sshd komutuyla kontrol edilir.
5. Anahtarı başka sunucularda da kullanabilir miyim?
Evet, sadece id_rsa.pub içeriğini diğer sunucuların authorized_keys dosyasına eklemen yeterli.
🏁 Sonuç
Artık CentOS sunucunda parolasız, güvenli SSH bağlantısı aktif. Bu yöntem hem hız kazandırır hem de güvenlik seviyeni üst düzeye çıkarır.
🚀 Tüm bu adımları Rabisu Bulut üzerindeki sunucularında da uygulayabilir, altyapını brute-force saldırılarına karşı sağlamlaştırabilirsin.