SSH key ile şifre girişini kapatın: Güvenli erişim rehberi
SSH key ile kimlik doğrulama kurup şifre tabanlı girişi kapatın. Hatalı kilitlenmeyi önlemek için adım adım kontrol listesi.
Güvenli bir sunucu erişimi, yalnızca “giriş yapmak” değil; yanlış kimlik doğrulama yöntemlerini devre dışı bırakmak ve saldırı yüzeyini küçültmek demektir. SSH tarafında şifreyle giriş (password authentication) açık kaldığında, saldırganların brute force denemeleri için net bir hedef oluşur. Bu rehberde SSH key (anahtar) kullanarak kimlik doğrulamayı kuracak, ardından şifre tabanlı girişi devre dışı bırakacaksınız. En kritik risk olan “anahtarı eklemeden şifreyi kapatıp kendinizi kilitleme” durumunu adım adım önleyeceksiniz.
1) Hedef: SSH’de şifreyi kapatırken kendinizi kilitlememek
Şifre tabanlı SSH oturumlarında iki problem bir araya gelir: - Saldırganlar otomasyonla çok sayıda deneme yapabilir (brute force). - Şifrelerin tekrar kullanımı veya zayıf tahmin edilebilirlik riski vardır.
SSH key tarafında ise sunucu, kullanıcının elindeki özel anahtarla (private key) doğrulama yapar. Bu yaklaşımda “tahmin edilecek bir parola” bırakmazsınız.
Bu değişiklikte tek büyük risk vardır: Anahtarı sunucuya eklemeden PasswordAuthentication no gibi bir ayarı hemen devreye almak.
Kural: Önce key doğrulamasını test edin, sonra şifreyi kapatın.
Hızlı kontrol listesi (başlamadan)
- Sunucu üzerinde
~/.ssh/authorized_keysdosyası doğru izinlerle çalışıyor. - Kendi anahtarınız (public key) sunucuya ekli.
- Mümkünse yeni ayarları uygulamadan önce ayrı bir terminal/oturumdan test yapıyorsunuz.
2) SSH key üretimi: Sunucuya özel değil, kullanıcıya ait olun
Key üretimi yerel makinede yapılır. Linux/macOS’ta genellikle şu komut kullanılır:
ssh-keygen -t ed25519 -a 64
Windows tarafında (PowerShell) OpenSSH ile benzer şekilde ssh-keygen kullanılır. Komut sonunda iki dosya üretirsiniz:
- id_ed25519 (private key): Kesinlikle paylaşılmaz.
- id_ed25519.pub (public key): Sunucuya eklenecek kısımdır.
Önemli: Key dosyalarınızın izinleri hatalı olursa SSH key doğrulaması reddedebilir. Private key dosyası için sadece kendi kullanıcı yetkisine sahip olun.
3) Public key’i sunucuya ekleyin (AuthorizedKeys aşaması)
Sunucuya bağlandıktan sonra (şimdilik şifre ile bağlanabiliyor olsanız bile) public key’i doğru yere ekleyin.
Mevcut kullanıcı için authorized_keys ekleme
Sunucuda hedef kullanıcı adına şu adımları izleyin:
1) .ssh dizini yoksa oluşturun:
- mkdir -p ~/.ssh
2) İzinleri doğru verin:
- chmod 700 ~/.ssh
3) Public key’i authorized_keys dosyasına ekleyin:
- nano ~/.ssh/authorized_keys (veya cat >>) ile satırı ekleyin
- Satır sonunda yeni satır kalması sorun çıkarmaz
4) Dosya izinlerini doğru verin:
- chmod 600 ~/.ssh/authorized_keys
Anahtar ekledikten sonra test (kilitlenmeyi önleyen adım)
Şifreyi henüz kapatmayın. Önce şu testi yapın:
1) Yeni bir terminal/sekmede yeniden bağlanmayı deneyin. 2) SSH istemcisinde key kullanımı otomatik ise test tamam. 3) İsterseniz key’i açıkça belirtin:
ssh -i ~/.ssh/id_ed25519 kullanıcı@sunucu_ip
Başarılı bağlandıysanız, artık şifre tabanlı girişi kapatmaya hazırsınız.
4) Şifre tabanlı SSH girişini devre dışı bırakın
Sunucuda SSH daemon ayar dosyası genellikle /etc/ssh/sshd_config içindedir.
Değişiklik yapmadan önce yedek alın
- Dosyayı kopyalayın:
/etc/ssh/sshd_config→ bir kopya
sshd_config üzerinde net ayarlar
En kritik satırlar şunlardır:
PasswordAuthentication noChallengeResponseAuthentication no
Gerekli/önerilen ek ayarlar (senaryoya göre):
- PubkeyAuthentication yes
- PermitRootLogin no (root ile doğrudan giriş kapalı olmalı)
- KbdInteractiveAuthentication no
Not: Bazı sistemlerde sshd_config içinde Include yönergeleri bulunur. Ayarların hangi dosyada yazıldığı önemli; değişiklik yaptıktan sonra etkin ayarları doğrulamak gerekir.
SSH servisini yeniden yükleme
Tam yeniden başlatmak yerine yapılandırmayı reload etmek çoğu sistemde yeterlidir:
sudo systemctl reload sshd
Bazı dağıtımlarda servis adı ssh olabilir:
- sudo systemctl reload ssh
Ayarların yürürlükte olduğunu doğrulayın
Şunları kontrol edin (örnek komutlar):
- sudo sshd -T | grep -E 'passwordauthentication|pubkeyauthentication|challengeresponseauthentication'
Aşağıdaki mantık doğru olmalı:
- PasswordAuthentication: no
- PubkeyAuthentication: yes
5) Brute force riskini düşürmek için tamamlayıcı güvenlik adımları
Şifre girişini kapatmak tek başına güçlü bir adımdır. Ancak SSH’ye yönelik saldırı yüzeyini daha da küçültmek için aşağıdaki ayarlar doğrudan pratik fayda sağlar.
Uygulanabilir güvenlik ayarları
Aşağıdaki ayarlar çoğu sunucuda uygulanabilir:
- Port değişimi: Varsayılan 22 yerine farklı port (gürültü azaltır, güvenlik kanıtı değildir).
- Kullanıcı kısıtı: Belirli kullanıcıların SSH ile girişini izin verin.
- Fail2ban / benzeri koruma: Çok sayıda başarısız denemeyi otomatik engelleyin.
- 2FA (Mümkünse): SSH üzerinden donanım/uygulama tabanlı 2FA ekleyin.
“Password kapandı ama yine de deneme yapılıyor” durumu
Şifre kapalı olsa bile saldırganlar portu yoklar ve bağlantı kurmaya çalışabilir. Bu normaldir. Asıl ölçüm şudur:
- Başarısız deneme loglarında Accepted password gibi kayıtlar görünmemeli.
- Kimlik doğrulama yolu “publickey” üzerinden gerçekleşmeli.
6) Net kontrol listesi: Doğru uygulayıp doğru doğrulayın
Aşağıdaki listeyi sırasıyla tamamlayın. Her madde, “beklenen sonucu” doğrular.
Uygulama kontrolü
- [ ] Kendi public key’in sunucunun
~/.ssh/authorized_keysdosyasında. - [ ]
~/.sshdizini700,authorized_keysdosyası600izinlerinde. - [ ] Anahtar ile (key ile) yeni oturum açılabiliyor.
- [ ]
PasswordAuthentication noetkin. - [ ]
PubkeyAuthentication yesetkin. - [ ] Root ile doğrudan giriş kapalı (örn.
PermitRootLogin no).
Log doğrulaması (özellikle ilk saatler)
- [ ] Sunucu loglarında “şifre ile giriş kabul edildi” kayıtları yok.
- [ ] Başarılı oturumlarda kimlik doğrulama yöntemi “publickey”.
İleri seviye: Çoklu anahtar ve erişim yedekleme
- [ ] Aynı kullanıcıya ikinci bir admin key ekleyin (yedeği elinizde olsun).
- [ ] Key geri dönüş planı oluşturun: Anahtar iptali gerektiğinde hangisini sileceğinizi bilin.
- [ ] Daima en az iki bağımsız erişim yöntemi planlayın (ör. ayrı kullanıcı + ayrı key).
7) Hosting/kurulum bağımsız pratik senaryolar
Net bir şekilde ayırmak gerekir: Bu rehber VDS/VPS gibi Linux tabanlı sunucularda çalışır. Managed ortamlar (sağlayıcının sunduğu kontrollü erişim) için farklı arayüzler olabilir; ancak anahtar mantığı aynıdır.
Sağlayıcı panelinde SSH erişimi varsa
Bazı sağlayıcı panelleri “authorized key” eklemenize izin verir. Bu durumda:
- Panel üzerinden eklediğiniz key gerçekten sunucudaki doğru kullanıcıya gidiyor mu kontrol edin.
- Yine de sshd_config tarafında şifreyi kapatma adımını tamamlayın.
Dedicated sunucuda otomasyon varsa
Ansible, Cloud-init veya otomasyonla authorized_keys dağıtımı yapılıyorsa:
- sshd_config değişikliği otomasyonla eziliyor mu kontrol edin.
- Değişiklikten sonra doğrulama komutuyla etkin ayarı teyit edin.
Sonuç: Bugün uygulayın, ilk saatlerde doğrulayın
Şifre tabanlı SSH girişini devre dışı bırakmak, saldırı yüzeyini doğrudan azaltan net bir güvenlik iyileştirmesidir. Doğru sırayı izleyin: önce SSH key ile erişimi test edin, sonra PasswordAuthentication no ayarını devreye alın ve etkin ayarları loglarla doğrulayın. Aksiyon önerim: Bu değişikliği bir yönetim penceresi açıp canlı bağlantınızı kesmeden, iki ayrı oturum/terminal kullanarak aynı gün içinde tamamlayın; ilk 1-2 saat sunucu loglarını kontrol edin.
Hosting karşılaştırması yapmaya hazır mısın?
100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.
Hosting Karşılaştır →İlgili Yazılar
Veritabanı yedekleme: Sıklık ve saklama süreleri nasıl belirlenir?
MySQL/MariaDB ve genel veritabanlarında yedek sıklığı, saklama süreleri ve RPO/RTO ile test planı. Kayıp senaryolarına göre net rehber.
IPv6-only sunucular: hosting geleceği mi, ne zaman mantıklı?
IPv6-only sunucuların gerçek etkisini öğrenin: maliyet, erişilebilirlik, DNS/SSL kurulum adımları ve geçiş planı.
Auto-scaling nedir? Cloud’da kurulum için net adımlar
Auto-scaling (otomatik ölçekleme) nedir, nerede işe yarar? Cloud’da kural seti, metrikler, örnek kurulum ve test adımları.
VDS/VPS Performans Düşüşünde Net Sorun Giderme Rehberi
VDS/VPS performansı düştüğünde adım adım tanılama ve çözüm: CPU/RAM disk, ağ, kernel, loglar ve ölçümle kalıcı iyileştirme.
