SSH Key ile Şifreli Girişi Devre Dışı Bırakma Rehberi
SSH key ile giriş yapıp şifre tabanlı oturumu kapatın: adım adım yetkilendirme, güvenli test ve kilitlenmeyi önleme kontrolleri.
SSH üzerinden yönetim, VDS/VPS ve dedicated sunucularda günlük rutinin parçasıdır. Ancak şifre tabanlı SSH girişi, doğru parolalar bile olsa kaba kuvvet denemelerine (brute force) maruz kalır. Bu rehberde SSH key kullanarak oturum açmayı standart hale getirip şifre tabanlı girişi devre dışı bırakma adımlarını net biçimde uygulayacaksınız. En kritik nokta: ayarı yanlış yapmanız durumunda sunucuya erişiminizin kesilmesini önlemek için test ve geri dönüş planını birlikte kurmak.
Hedef: “Key ile giriş var, şifre ile giriş yok” mantığı
Şifreli SSH, parola deneme trafiğine açık olduğu için riskli kabul edilir. SSH key (public/private key) yaklaşımında sunucu, elinizdeki özel anahtarı (private key) değil; siz giriş yaptığınızda imzayı doğrulayarak yetki verir.
Net hedefler:
- Sunucuda en az bir authorized_keys kaydı aktif olacak.
- İki ayrı test yapacağız: mevcut oturum doğrulaması ve ayrı bir terminal/oturum üzerinden yeni ayar sonrası giriş testi.
- En sonunda sshd_config üzerinden şifre doğrulamayı kapatacağız.
Not: Bu rehber Linux tabanlı sunucular (Debian/Ubuntu/CentOS/RHEL türevleri) için yazılmıştır. Yol ve servis adı dağıtıma göre küçük farklılık gösterebilir.
Ön kontrol: Kilitlenmeyi engelleyen 3 adım
Şifreli girişi kapatmadan önce şu kontrol listesi tamamlanmalıdır.
1) Mevcut kullanıcıda key yetkisi var mı?
- Sunucuya mevcut yönteminizle (genelde şifreyle) bağlanın.
- Ana dizinde
authorized_keysdosyasının varlığını kontrol edin.
ls -la ~/.ssh
ls -la ~/.ssh/authorized_keys
~/.sshklasörü veauthorized_keysdosyası yoksa, aşağıdaki “SSH key oluşturma ve ekleme” adımını uygulayın.
2) Yeni key’i doğrulayın (private key elinizde mi?)
Key çifti şu mantıkla çalışır: - private key: Sadece sizde kalmalı. Sunucuda tutulmaz. - public key: Sunucuya yüklenir.
Private key bilgisayarınızda değilse, sunucudan yeni key üretip public kısmı ekleseniz bile erişim senaryosu değişir. Bu rehberin hedefi, elinizde private key varken sunucuyu güvenli şekilde güncellemektir.
3) Çift oturum testi planı yapın
Şifre doğrulamayı kapattığınız anda yeni oturum açmazsanız kilitlenme riski artar. Bu yüzden: - Mevcut SSH oturumunuzu kapatmayın. - Aynı anda ikinci bir terminal üzerinden (tercihen farklı ağdan) yeni ayarla giriş denemesi yapın. - Sonra başarılıysa mevcut oturumdan çıkın.
SSH key oluşturma ve sunucuya ekleme
Hedef: Ed25519 kullanın
Modern dağıtımlarda en pratik yöntem ed25519 anahtar türüdür. Aşağıdaki komut yerel makinede (Windows/Linux/macOS) çalıştırılır.
ssh-keygen -t ed25519 -a 64 -f ~/.ssh/netkiyas_vps_key
- Dosya yolu iki parçayı üretir:
..._key(private) ve..._key.pub(public)
Public key’i almak için:
cat ~/.ssh/netkiyas_vps_key.pub
Public key’i sunucuya ekleyin (iki güvenli yöntem)
Yöntem A: Oturum açıkken manuel ekleme
Sunucuda hedef kullanıcı için:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
Public key çıktısını satırın tamamı tek satır olacak şekilde authorized_keys içine yapıştırın. Sonra izinleri doğrulayın:
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
Yöntem B: ssh-copy-id ile otomatik ekleme
ssh-copy-id mevcutsa daha hızlıdır:
ssh-copy-id -i ~/.ssh/netkiyas_vps_key.pub user@sunucu_ip
Bu işlem, public key’i doğru dosya/izinlerle yerleştirir.
sshd_config düzeni: Şifreli girişi kapatmanın doğru yeri
SSH ayarları genelde /etc/ssh/sshd_config veya bazı dağıtımlarda /etc/ssh/sshd_config.d/*.conf parçaları üzerinden yönetilir.
Ana dosyada doğru satırları bulun
Önce mevcut yapılandırmayı yedekleyin:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F)
Dosyayı açın:
sudo nano /etc/ssh/sshd_config
Hedeflediğimiz parametreler:
- PasswordAuthentication no
- KbdInteractiveAuthentication no (varsa)
- ChallengeResponseAuthentication no (varsa)
- İsteğe bağlı ama sık kullanılan: UsePAM no (PAM kullanan sistemlerde dikkat)
En kritik satırlar şunlardır:
- PasswordAuthentication: şifreyle giriş kapatır.
- KbdInteractiveAuthentication: bazı sistemlerde parola/etkileşim mekanizması şifreye benzer denemelere yol açabilir.
Rehberin net hedefi için sshd_config içine (varsa var olan satırları güncelleyerek) şu ayarları ekleyin:
PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
Eğer dağıtımınız PAM tabanlı 2FA kullanıyorsa,
UsePAMkapatma önerisi her senaryoda doğru değildir. Bu rehberde ilk adım olarak şifre doğrulamasını kapatıyoruz. Sonra kurum/uygulamanıza göre PAM/2FA ayarlarını ayrı değerlendirmeniz gerekir.
Public key ile giriş zorunlu mu yapılmalı?
Genellikle PubkeyAuthentication yes varsayılan olarak etkindir. Yine de netleştirmek için şunları kontrol edin:
PubkeyAuthentication yes
Değişiklikleri test etme: Canlıda hata yapmamak için kontrol komutları
Konfigürasyonu güncelledikten sonra SSH daemon yeniden başlatılmadan önce doğrulama yapılmalıdır.
sshd konfigürasyonunu doğrulayın
sudo sshd -t
- Bu komut hata vermezse, satır sözdizimi açısından risk azalır.
Servisi yeniden yükleyin
Çoğu sistemde:
sudo systemctl reload sshd
Bazı sistemlerde servis adı ssh olabilir:
sudo systemctl reload ssh
Ayrı oturum testi yapın
- Mevcut oturum açık kalsın.
- Yeni bir terminalden
-iile key’i belirterek tekrar bağlanın:
ssh -i ~/.ssh/netkiyas_vps_key user@sunucu_ip
Başarılı olursa bir sonraki aşamaya geçin. Başarısız olursa:
- Mevcut oturumu kapatmayın.
- sshd -T | grep -i password gibi çıktı kontrolüyle parametrelerin gerçekten uygulandığını doğrulayın.
- Geri dönüş olarak .bak dosyasını kullanıp tekrar doğrulama + reload yapın.
Yetkilendirme güvenliği: authorized_keys izinleri ve kullanıcı kısıtları
Şifre doğrulamayı kapatmak tek başına yeterli değildir. SSH’nin key kabul etmesi için izinler kritik derecede önemlidir.
İzinler neden önemli?
Eğer ~/.ssh ve authorized_keys izinleri “çok açık” olursa sshd anahtarları görmez ve key ile giriş çalışmaz.
Uygun izin şeması:
- ~/.ssh : 700
- authorized_keys : 600
Kontrol:
namei ~/.ssh
ls -la ~/.ssh ~/.ssh/authorized_keys
Hangi kullanıcılar erişsin?
İsterseniz SSH config içinde sadece belirli kullanıcıları izinli kılabilirsiniz.
AllowUsers user1 user2
Bu adımı eklediğinizde hedef kullanıcı(lar) listede olmalıdır. Aksi halde kilitlenme riski doğar.
Ek güvenlik: sadece key, doğru port, log izleme
SSH portunu değiştirmek “tek başına çözüm değildir”
Port değiştirme otomatik saldırıları azaltabilir ama ana risk (şifre denemesi) kapandığında anlamlı fayda doğar. Port değişimi bir hardening adımıdır; fakat bu rehberin ana odağı şifre doğrulamayı kaldırmaktır.
Fail2ban veya benzeri mekanizmalar
Şifre kapatıldıktan sonra brute force etkisi azalır. Yine de log izleme ve gerektiğinde fail2ban gibi araçlar, anomali tespiti için değerlidir.
Loglar:
- Debian/Ubuntu: journalctl -u ssh --since "1 hour ago"
- Sistemlere göre /var/log/auth.log
Örnek:
sudo journalctl -u ssh --since "30 minutes ago"
Sık yapılan hatalar ve net çözümler
Aşağıdaki sorunlar en sık kilitlenme veya giriş başarısızlığı yaratır.
Hata 1: authorized_keys izinleri yanlış
Belirti: Key ile giriş denemesi hata verir.
Çözüm: chmod 700 ~/.ssh ve chmod 600 ~/.ssh/authorized_keys uygula.
Hata 2: config farklı dosyada override ediliyor
Belirti: sshd_config güncel ama değişiklikler etkisiz.
Çözüm: Sisteminizde Include /etc/ssh/sshd_config.d/*.conf varsa ilgili parçaları da kontrol edin. Nihai ayarı görmek için:
sudo sshd -T | grep -i passwordauthentication
Hata 3: reload yerine yanlış restart süreci
Belirti: SSH anlık kesilir veya servis beklenmedik şekilde davranır.
Çözüm: Konfigürasyon doğrulamasını yapın (sshd -t), ardından reload tercih edin. Kötü senaryoda bile mevcut oturumunuz sayesinde geri dönüş yapabilirsiniz.
Hata 4: Key yanlış kullanıcıya eklenmiş
Belirti: Başka kullanıcı ile bağlanınca çalışır gibi görünür, asıl kullanıcıda çalışmaz.
Çözüm: Public key’in eklendiği authorized_keys dosyasının doğru kullanıcı hesabının ana dizininde olduğundan emin olun.
Şifreli giriş kapatma kararını hızlandıran kontrol tablosu
Aşağıdaki tablo, “kapatmadan önce tamam” kontrol listesini özetler.
| Kontrol | Komut/Belirti | Doğru sonuç |
|---|---|---|
authorized_keys var |
ls -la ~/.ssh/authorized_keys |
Dosya mevcut |
| SSH key izinleri | chmod 700 ~/.ssh / chmod 600 ... |
İzinler doğru |
| Konfigürasyon doğrulama | sudo sshd -t |
Hata yok |
| Şifre doğrulama kapalı | sshd -T | grep -i passwordauthentication |
passwordauthentication no |
| Yeni oturum testi | Ayrı terminalden ssh -i ... |
Giriş başarıyla tamamlanır |
| Geri dönüş planı | Bak dosya mevcut | .bak üzerinden hızlı dönüş |
Sonuç: Bugün yapmanız gereken net aksiyon planı
Şifre tabanlı SSH girişini devre dışı bırakmak, brute force riskini doğrudan düşüren bir adımdır. Aksiyon sırası şu şekilde olmalı: önce SSH key yetkisini doğru kullanıcıya yükleyin, sonra sshd_config içinde PasswordAuthentication ve ilgili interaktif doğrulama ayarlarını kapatın, en sonda sshd -t doğrulaması + reload sonrası ikinci bir oturumla testi tamamlayın. Bu sırayı izlediğinizde kilitlenme riski minimuma iner ve sunucunuzu yönetirken güvenlik standardını ölçülebilir şekilde yükseltirsiniz.
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
WP-CLI ile sunucudan WordPress yönetimi: Rehber
WP-CLI ile WordPress eklenti kurma, güncelleme, yedek alma ve sorun giderme adımlarını komut seviyesinde öğrenin. Hata azaltın.
2FA (Çift Doğrulama) Hosting Hesabı Neden Zorunlu?
Hosting hesabında 2FA, şifre çalınması ve yetkisiz giriş riskini ciddi azaltır. Hangi senaryolarda zorunlu olduğunu net anlatıyoruz.
Hosting’de Inode limiti nedir, neden önemli? (Net rehber)
Hosting’de inode limiti nedir, ne zaman sorun çıkarır? Dosya sayısı yüksek siteler için inode limitinin etkisini ve çözüm adımlarını öğrenin.
Hosting güvenliği: Sağlayıcının sorumluluğu nerede başlar, biter?
Hosting sağlayıcısı hangi güvenlik katmanlarından sorumludur? Paylaşımlı/VPS/dedicated için somut kontrol noktaları, SLA ve yedekleme sınırları.
