SSH key ile giriş: Şifre tabanlı oturumu kapatma rehberi
SSH’de şifre tabanlı girişi kapatın. Anahtar üretimi, yetkilendirme, test ve kalıcı güvenlik için adım adım planı öğrenin.
SSH erişimi (Secure Shell), sunucu yönetiminde en sık kullanılan kanallardan biridir. Şifre tabanlı oturumlar ise parola tahmini ve sözlük denemelerine açık olduğu için doğrudan risk oluşturur. Bu rehberde, SSH key (anahtar tabanlı kimlik doğrulama) kurulumunu, mevcut bağlantınızı kaybetmeden şifre girişini devre dışı bırakmayı ve doğrulama adımlarını net şekilde öğreneceksiniz.
Aşağıdaki adımlar; VDS/VPS/dedicated Linux sunucularda (Ubuntu/Debian/CentOS/RHEL ailesi) uygulanabilir. Hedefiniz: Şifreyle giriş kapalı, yalnızca anahtar (public key) ile erişim açık olsun.
SSH key kurulumunun temel mantığı
SSH iki parça kullanır: - Private key: Sizde kalır. Doğrudan sunucuya gönderilmez. - Public key: Sunucuya yüklenir. Sunucu, kimlik doğrulama için bu anahtarı “yetkili” olarak tanımlar.
Şifre tabanlı girişin kapatılması, sunucuya brute-force denemelerinin önünü keser. Anahtar tabanlı erişim ise parola yerine kriptografik imza mantığıyla çalışır ve otomatik tahmin denemeleriyle aşılması pratik olarak mümkün değildir.
İlk kritik kural: Şifreyi kapatmadan önce key ile bağlanın
Şifre girişini kapatmadan önce yeni oturumunuzu doğrulayın. Çünkü yanlış anahtar yükleme veya izin (permission) hataları, tek erişim yolunuz kapanırsa kurtarmayı zorlaştırır.
Aşağıdaki adımlar bu riski sıfıra indirgemek için sıraya alınmıştır.
Adım 1: Local bilgisayarda SSH key üretin
Sunucuya bağlanacağınız bilgisayarda yeni bir anahtar üretin. Linux/macOS için terminal, Windows için PowerShell/Terminal kullanabilirsiniz.
1) Anahtar üretin:
- RSA yerine mümkünse ed25519 kullanın:
ssh-keygen -t ed25519 -a 64 -f ~/.ssh/netkiyas_sunucu
2) İsterseniz parola (passphrase) belirleyin. Passphrase kullanımı güvenliği artırır; otomasyonlarda ise agent (ssh-agent) ile yönetilir.
3) Çıktılar:
- ~/.ssh/netkiyas_sunucu (private key)
- ~/.ssh/netkiyas_sunucu.pub (public key)
Not:
~/.sshklasörü ve dosya izinleri yanlışsa SSH bazen key’i reddeder. Bu rehber izin bölümlerinde devam eder.
Adım 2: Public key’i sunucuya yükleyin
Public key’i sunucuya yüklemenin iki doğru yöntemi vardır: (1) ssh-copy-id (mevcutsa) veya (2) manuel authorized_keys ekleme.
Yöntem A: ssh-copy-id
ssh-copy-id -i ~/.ssh/netkiyas_sunucu.pub user@sunucu_ip
Komut başarılırsa artık şifreyle değil key ile bağlanabileceksiniz.
Yöntem B: Manuel authorized_keys
Public key içeriğini alın ve sunucuda doğru dosyaya yazın.
1) Yerel makinede public key’i görüntüleyin:
cat ~/.ssh/netkiyas_sunucu.pub
2) Sunucuya şimdilik şifre ile bağlanın (şifre kapatılmadan):
ssh user@sunucu_ip
3) Sunucuda authorized_keys dosyasını oluşturun ve ekleyin:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
Public key satırını dosya sonuna yapıştırın.
4) İzinleri düzeltin:
chmod 600 ~/.ssh/authorized_keys
Yetki kontrolü (permission) neden şart?
SSH, ~/.ssh ve authorized_keys için çok sıkı izin kurallarına bakar. En yaygın hata: ~/.ssh veya authorized_keys world-writable (herkes yazabilir) olması.
Adım 3: Key ile girişin çalıştığını test edin
Şifre tabanlı girişi kapatmadan önce, yeni oturumun key ile açıldığını kanıtlayın.
Local bilgisayardan:
ssh -i ~/.ssh/netkiyas_sunucu user@sunucu_ip
Başarılı bağlandığında bir sonraki adıma geçin.
Testi doğrulamak için oturum içi kontrol
Sunucuya bağlandıktan sonra başka bir komutla erişimin sürdüğünü doğrulayın. Örneğin:
whoamiuname -a- Paket güncelleme yapmayın; sadece komutların çalıştığını kontrol edin.
Adım 4: sshd_config dosyasıyla şifre girişini kapatın
Şimdi hedef ayarı uygulayacağız. Dosya konumları dağıtıma göre değişebilir:
- Debian/Ubuntu: /etc/ssh/sshd_config
- Bazı sistemler: /etc/ssh/sshd_config.d/*.conf
Önce ana dosyayı kontrol edin.
Mevcut ayarı yedekleyin
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_2026_08_19
Konfigürasyon satırlarını bulun
Aşağıdaki ayarları ekleyin veya mevcut değerleri değiştirin.
- Şifre girişini kapatın:
PasswordAuthentication no- Boş/host bazlı giriş denemelerini kapatın (ek güvenlik):
PermitEmptyPasswords no- Kullanıcı adı parolası yerine anahtarla giriş hedeflenir:
ChallengeResponseAuthentication no
Dosyaya şu şekilde ekleyin (değerleri aynen bırakın):
PasswordAuthentication noKbdInteractiveAuthentication noChallengeResponseAuthentication noPermitRootLogin no(kök erişimi anahtar dışında engellemek için)
PermitRootLoginayarı, kuruluşunuzun standardına göre değişebilir. Eğer root yerine ayrı kullanıcıyla giriş yapıyorsanızPermitRootLogin nodaha nettir.
Adım 5: yapılandırmayı test edin ve servisi yeniden başlatın
sshd konfigürasyon testini çalıştırın
sudo sshd -t
Komut hata vermezse konfigürasyon söz dizimi (syntax) açısından sorunlu değildir.
Servisi yeniden yükleyin
sudo systemctl reload sshd
Bazı sistemlerde servis adı ssh olabilir:
sudo systemctl reload ssh
Doğrulama: Şifreyle giriş gerçekten kapanmış mı?
Yeni bir terminal penceresi açın ve şifreyle giriş denemesi yapın.
Örneğin key’i belirtmeden:
ssh user@sunucu_ip
Bu komut parola isterse (ve siz parola girebilirseniz) şifre tabanlı giriş kapatılmamıştır. Parola istemeden doğrudan reddediyorsa güvenlik hedefi sağlanmıştır.
Kritik: Testi, aynı oturum açıkken yapın. Eğer yanlış konfigürasyonla bağlantı düşerse, mevcut oturum kurtarma şansı sağlar.
Sık karşılaşılan sorunlar ve net çözümler
1) Public key eklendi ama yine şifre istiyor
Muhtemel nedenler:
- authorized_keys yanlış konumda (ör. ~/.ssh/authorized_key)
- İzinler gevşek/tutarsız
- Doğru kullanıcıya key eklenmedi (örn. user yerine ubuntu)
Hızlı kontrol komutları:
- Kullanıcının home dizinini ve SSH klasörünü doğrulayın:
echo $HOMEls -la ~/.ssh- İzinleri kontrol edin:
chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
2) ssh -i ... ile çalışıyor ama normal komutla çalışmıyor
Bu, local tarafta ~/.ssh/config veya key’in default kullanımının değişik olmasından kaynaklanır.
Net çözüm: key dosyasını varsayılan isimle kullanın veya konfigurasyon girin.
- Varsayılan key adı: ~/.ssh/id_ed25519
3) Sunucu reload sonrası hata veriyor
sudo sshd -t komutu hatalı çıktı verdiyse dosyada yanlış satır/karakter vardır.
Net çözüm:
- sshd_config.bak_2026_08_19 yedeğini geri yükleyin
- Sonra yeniden test edin.
4) Root girişini kapatınca bağlantı kayboldu
Root yerine normal kullanıcıyla bağlanıyorsanız doğru kullanıcı adıyla devam edin.
Net çözüm:
- Yeni kullanıcıya key ekleyin
- PermitRootLogin no hedefinizi doğru kurgulayın.
Karşılaştırma: Şifre tabanlı giriş yerine anahtar tabanlı erişim
Aşağıdaki tablo, aynı güvenlik hedefinde şifre vs key yaklaşımının farkını net özetler.
| Özellik | Şifre tabanlı SSH | SSH key tabanlı SSH |
|---|---|---|
| Otomatik parola denemelerine açıklık | Yüksek (brute-force risk) | Düşük (anahtar yoksa giriş yok) |
| Loglarda davranış | Çok sayıda “failed password” | Daha az, daha net eşleşme |
| Yönetim | Parola politikası, değişim | Anahtar rotasyonu (key değişimi) |
| Hatalı konfigürasyon riski | Şifre unutma/guess | Yanlış izin/anahtar yüklemede erişim kaybı |
| Kurulum adımları | Basit başlangıç | Planlı kurulum gerektirir |
Uygulama planı (5 adımda kapanış)
Bu plan, sunucu erişimini kaybetmeden ilerlemek için doğrudur:
- Local bilgisayarda ed25519 key üretin.
- Public key’i doğru kullanıcıya
~/.ssh/authorized_keysiçine ekleyin. - Şifreyi kapatmadan önce
ssh -i ...ile bağlanın. /etc/ssh/sshd_configiçindePasswordAuthentication nove güvenlik tamamlayıcı ayarları uygulayın.sshd -tile test edin, reload sonrası şifre girişini deneme ile doğrulayın.
(Opsiyonel) SSH erişimini daha da sağlamlaştırma
Anahtar tabanlı erişim tek başına büyük iyileştirmedir. Ek olarak şu kontroller güvenlik seviyesini yükseltir:
- AllowUsers veya AllowGroups ile yalnızca yetkili kullanıcıları tanımlamak
- Gereksiz kullanıcılar için key eklememek
- Fail2ban benzeri otomasyonlarla tekrar eden denemeleri kısıtlamak
Sonuç ve önerilen aksiyon
Şifre tabanlı SSH girişini kapatmak, sunucunuzu hedefleyen otomatik parola denemelerine karşı en net savunmalardan biridir. Bugün yapmanız gereken: Önce local makinede SSH key oluşturun, sonra doğru kullanıcıya authorized_keys ekleyin ve key ile bağlanabildiğinizi test edin. Test tamamlandıktan sonra PasswordAuthentication no ayarını uygulayıp sshd -t + reload ile doğrulayın; en son adım olarak şifreyle giriş denemesi yaparak kapatmayı kanıtlayın. Bu sırayı birebir takip ettiğinizde erişim kaybı riski minimuma iner.
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
Domain Privacy Lock Nedir? Neden Her Zaman Açık Olmalı?
Domain Privacy Lock, alan adı kayıt bilgilerinin herkese açık görünmesini engeller. Bu rehberde ne işe yaradığını ve ne zaman açmanız gerektiğini anlatıyoruz.
VPS/VDS Performans Düşüşünde 30 Dakika İçinde Net Teşhis
VPS/VDS performansı düşerse adım adım teşhis: CPU/RAM/disk/IO, ağ ve olası disk doluluğu, süreç limitleri ve hızlı aksiyonlar.
VDS Sunucuda IOPS Değeri Neden Kritik? Net Açıklama
VDS’te IOPS değeri; uygulama gecikmesi, yük altında performans ve disk darboğazı için belirleyicidir. RAID, SSD ve ölçüm rehberi.
Sunucudan Localhost"a SSH Tunneling: Net Uygulama Rehberi
Sunucudan localhost"a SSH tunneling ile kapalı portlara erişimi güvenli hale getirin. Komutlar, senaryolar, hata teşhisi ve pratik güvenlik adımları.