Debian’da SSH Sunucusu Nasıl Kurulur ve Yapılandırılır (Eksiksiz Kılavuz)
SSH (Secure Shell), modern sunucu yönetiminin en temel protokollerinden biridir. Linux sunucularına uzaktan erişmek ve yönetmek için şifreli, kimlik doğrulamalı bir kanal sağlar — bu da onu sistem yöneticileri, geliştiriciler ve uzak bir makine çalıştıran herkes için vazgeçilmez bir araç haline getirir. İster bir VPS Hosting ortamı ister bir Dedicated Server yönetiyor olun, SSH sunucunuzu doğru şekilde kurmak ve güçlendirmek tamamlamanız gereken ilk görevlerden biridir.
Bu kapsamlı kılavuzda, Debian üzerine OpenSSH’ı nasıl kuracağınızı, güvenli şekilde yapılandıracağınızı, anahtar tabanlı kimlik doğrulamayı nasıl ayarlayacağınızı ve sunucunuzu yetkisiz erişime karşı korumak için en iyi güvenlik sıkılaştırma önlemlerini nasıl uygulayacağınızı öğreneceksiniz.
Ön Koşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
- Debian tabanlı bir sunucu (Debian 10 Buster, 11 Bullseye veya 12 Bookworm)
sudoayrıcalıklarına sahip root olmayan bir kullanıcı veya ilk kurulum için doğrudan root erişimi- Linux komut satırına temel düzeyde aşinalık
- Sunucunuza ağ erişimi
Adım 1: Sisteminizi Güncelleyin ve OpenSSH Server’ı Kurun
Herhangi bir yazılım kurmadan önce, paket dizininizi yenilemek ve mevcut paketleri en son sürümlerine yükseltmek iyi bir uygulamadır. Bu, uyumluluğu sağlar ve güvenlik açıklarını azaltır.
sudo apt update && sudo apt upgrade -yŞimdi OpenSSH sunucu paketini kurun:
sudo apt install openssh-server -yPaket yöneticisi, OpenSSH’ı ve gerekli bağımlılıkları indirip kuracaktır. Kurulum tamamlandığında, SSH hizmeti genellikle otomatik olarak başlatılır.
SSH Hizmetinin Çalıştığını Doğrulayın
ssh hizmetinin aktif ve etkin olduğunu onaylayın:
sudo systemctl status ssh
Aşağıdakine benzer bir çıktı görmelisiniz:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since ...
Hizmet çalışmıyorsa, manuel olarak başlatın ve önyüklemede başlaması için etkinleştirin:
sudo systemctl start ssh
sudo systemctl enable ssh
Adım 2: SSH Yapılandırma Dosyasını Anlayın
Birincil SSH daemon yapılandırma dosyası şu konumda bulunur:
/etc/ssh/sshd_config
Bu dosya, SSH sunucunuzun nasıl davranacağının neredeyse her yönünü kontrol eder — hangi portu dinlediğinden, hangi kimlik doğrulama yöntemlerine izin verildiğine kadar. Herhangi bir değişiklik yapmadan önce, orijinal dosyanın bir yedeğini oluşturun:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Şimdi dosyayı bir metin düzenleyiciyle açın:
sudo nano /etc/ssh/sshd_config
Aşağıdaki bölümler, en önemli yapılandırma seçeneklerini adım adım açıklamaktadır.
Adım 3: SSH Yapılandırmanızı Güçlendirin
3.1 Varsayılan SSH Portunu Değiştirin (Önerilir)
Varsayılan olarak, SSH port 22‘yi dinler. Bu geniş çapta bilinmektedir ve otomatik botlar, kaba kuvvet saldırıları denemek için açık port 22 bağlantılarını sürekli olarak taramaktadır. Portu standart dışı bir değere değiştirmek bu gürültüyü önemli ölçüde azaltır.
Aşağıdaki satırı bulun (# ile yorum satırı haline getirilmiş olabilir):
#Port 22
Yorumu kaldırın ve değeri değiştirin:
Port 2222
> Not: Başka bir hizmet tarafından kullanılmayan 1024 ile 65535 arasında bir port numarası seçin. Yaygın alternatifler arasında 2222, 2200 veya 4422 bulunur. Güvenlik duvarı kurallarınızı buna göre güncellemeyi unutmayın (bkz. Adım 5).
3.2 Root Girişini Devre Dışı Bırakın (Kesinlikle Önerilir)
SSH üzerinden doğrudan root girişine izin vermek önemli bir güvenlik riskidir. Bir saldırgan root parolasını tahmin eder veya kaba kuvvetle kırarsa, sunucunuzun tam kontrolünü ele geçirir. Aşağıdaki yönergeyi bulup değiştirerek devre dışı bırakın:
PermitRootLogin no
Yönetimsel görevler gerçekleştirmeniz gerekiyorsa, normal bir kullanıcı olarak giriş yapın ve sudo kullanarak ayrıcalıkları yükseltin.
3.3 SSH Erişimini Belirli Kullanıcılarla Sınırlayın
SSH üzerinden giriş yapmasına izin verilen belirli kullanıcı hesaplarını beyaz listeye ekleyebilirsiniz. Bu, yetkisiz veya sistem hesaplarının giriş noktası olarak kullanılmasını engeller:
AllowUsers your_username deploy_user
Alternatif olarak, erişimi gruba göre kısıtlayabilirsiniz:
AllowGroups sshusers
3.4 Parola Kimlik Doğrulamasını Devre Dışı Bırakın (Anahtar Kimlik Doğrulamasını Kurduktan Sonra)
SSH anahtar kimlik doğrulaması çalışır hale geldikten sonra (bkz. Adım 6), kaba kuvvet saldırı vektörlerini ortadan kaldırmak için parola tabanlı girişleri tamamen devre dışı bırakın:
PasswordAuthentication no
3.5 Ek Güvenlik Sıkılaştırma Yönergeleri
Daha sağlam bir güvenlik duruşu için aşağıdaki satırları ekleyin veya değiştirin:
# Disable empty passwords
PermitEmptyPasswords no
# Limit authentication attempts per connection
MaxAuthTries 3
# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2
# Disable X11 forwarding if not needed
X11Forwarding no
# Use only SSH Protocol 2
Protocol 2
# Restrict to specific address family (IPv4 only example)
AddressFamily inet
Son /etc/ssh/sshd_config ilgili bölümünüz şuna benzer görünmelidir:
Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
Adım 4: Yapılandırmayı Doğrulayın ve SSH’ı Yeniden Başlatın
Hizmeti yeniden başlatmadan önce, yapılandırma dosyanızı sözdizimi hataları açısından her zaman test edin. Yanlış yapılandırılmış bir sshd_config sunucunuzdan çıkmanıza neden olabilir:
sudo sshd -t
Hata döndürülmezse, SSH daemon’ını yeniden başlatarak değişiklikleri uygulayın:
sudo systemctl restart ssh
Hizmetin temiz şekilde yeniden başladığını doğrulayın:
sudo systemctl status ssh
> ⚠️ Önemli: Mevcut SSH oturumunuzu kapatmadan önce, ikinci bir terminal penceresi açın ve yeni yapılandırmayı test edin. Bu şekilde, bir şeyler ters giderse sorunu düzeltmek için hâlâ aktif bir oturumunuz olur.
Adım 5: Güvenlik Duvarı Kurallarını Güncelleyin
Debian’da varsayılan güvenlik duvarı aracı olan UFW‘yi (Uncomplicated Firewall) kullanıyorsanız, yeni SSH portunuzdaki trafiğe izin vermeniz gerekir.
Portu 2222 olarak değiştirdiyseniz:
sudo ufw allow 2222/tcp
sudo ufw reload
Varsayılan port 22’yi koruduysanız:
sudo ufw allow ssh
sudo ufw reload
Mevcut güvenlik duvarı durumunu kontrol edin:
sudo ufw status verbose
UFW henüz etkin değilse, etkinleştirin (kilitlenmeyi önlemek için önce SSH portunuzun izin verildiğinden emin olun):
sudo ufw enable
Adım 6: SSH Anahtar Tabanlı Kimlik Doğrulamayı Kurun
SSH anahtar kimlik doğrulaması, parola tabanlı girişten çok daha güvenlidir. Asimetrik kriptografi kullanır — bir özel anahtar (istemci makinenizde gizli tutulan) ve bir genel anahtar‘dan (sunucuda saklanan) oluşan bir anahtar çifti. Bir saldırgan kullanıcı adınızı bilse bile, özel anahtar olmadan giriş yapamaz.
6.1 İstemci Makinenizde SSH Anahtar Çifti Oluşturun
Yerel makinenizde (sunucuda değil) aşağıdaki komutu çalıştırın:
ssh-keygen -t ed25519 -C "your_email@example.com"
> Neden Ed25519? Ed25519, eski RSA algoritmasına kıyasla daha iyi güvenlik ve performans sunan modern bir eliptik eğri algoritmasıdır. Sisteminiz bunu desteklemiyorsa, 4096 bitlik anahtarla RSA kullanın: ssh-keygen -t rsa -b 4096İstendiğinde, bir kayıt konumu seçin (varsayılan ~/.ssh/id_ed25519‘dir) ve ek bir koruma katmanı için güçlü bir parola belirleyin.
6.2 Genel Anahtarı Sunucunuza Kopyalayın
Genel anahtarınızı sunucuya güvenli şekilde aktarmak için ssh-copy-id kullanın:
ssh-copy-id -p 2222 username@your_server_ipBu komut, genel anahtarınızı sunucudaki ~/.ssh/authorized_keys dosyasına doğru izinlerle ekler.
ssh-copy-id mevcut değilse, bunu manuel olarak yapabilirsiniz:
# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub
# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys6.3 Anahtar Tabanlı Girişi Test Edin
İstemci makinenizden sunucuya bağlanın:
ssh -p 2222 username@your_server_ipAnahtar parolanız için istem almalısınız (hesap parolanız için değil). Onaylandıktan sonra güvenli şekilde giriş yapmış olursunuz.
6.4 Parola Kimlik Doğrulamasını Devre Dışı Bırakın
Anahtar tabanlı kimlik doğrulama çalışır hale geldiğine göre, /etc/ssh/sshd_config dosyasına geri dönün ve şunları sağlayın:
PasswordAuthentication noUygulamak için SSH’ı yeniden başlatın:
sudo systemctl restart sshAdım 7: SSH Güvenliğini İzleyin ve Sürdürün
SSH’ı kurmak ve yapılandırmak tek seferlik bir görev değildir. Sızma girişimlerini tespit etmek ve güvenli bir ortamı sürdürmek için sürekli izleme şarttır.
Başarısız Giriş Denemelerini Kontrol Edin
sudo journalctl -u ssh | grep "Failed password"Veya başarısız giriş denemelerini görüntülemek için lastb kullanın:
sudo lastb | head -20Kaba Kuvvet Saldırılarını Engellemek için Fail2Ban Kurun
Fail2Ban, günlük dosyalarını izler ve kötü niyetli davranış gösteren (tekrarlanan başarısız giriş denemeleri gibi) IP adreslerini otomatik olarak engeller:
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2banSSH için yerel bir jail yapılandırması oluşturun:
sudo nano /etc/fail2ban/jail.localAşağıdakileri ekleyin:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600Uygulamak için Fail2Ban’ı yeniden başlatın:
sudo systemctl restart fail2banOpenSSH’ı Güncel Tutun
Bilinen güvenlik açıklarını gidermek için OpenSSH’ı düzenli olarak güncelleyin:
sudo apt update && sudo apt upgrade openssh-server -ySSH Sunucunuza Bağlanma: Hızlı Başvuru
| Senaryo | Komut |
|---|---|
| Varsayılan port (22) | ssh username@your_server_ip |
| Özel port | ssh -p 2222 username@your_server_ip |
| Belirli kimlik dosyası | ssh -i ~/.ssh/id_ed25519 username@your_server_ip |
| Ayrıntılı çıktı (hata ayıklama) | ssh -v username@your_server_ip |
| SSH üzerinden dosya kopyalama | scp -P 2222 file.txt username@your_server_ip:/path/ |
SSH için Doğru Hosting Ortamını Seçme
Bu kılavuzdaki adımlar herhangi bir Debian tabanlı sunucu için geçerlidir, ancak kullandığınız hosting türü ortamınıza nasıl eriştiğinizi ve yönettiğinizi etkiler:
- VPS Hosting: cPanel’li VPS veya diğer VPS Kontrol Panelleri, grafik yönetim arayüzünün yanı sıra tam root SSH erişimi sağlar — hem güç hem de kolaylık isteyen kullanıcılar için idealdir.
- Dedicated Servers: Bir Dedicated Server ile tam donanım düzeyinde kontrole sahip olursunuz; bu da SSH yapılandırmasını daha da kritik hale getirir, çünkü makinenin güvenliğinden yalnızca siz sorumlusunuzdur.
- Shared Hosting: Shared Web Hosting planları, ortam birden fazla kullanıcı arasında paylaşıldığından genellikle sınırlı veya hiç SSH erişimi sağlamaz. SSH bir gereksinimse, VPS’e yükseltme önerilen yoldur.
Sonuç
Debian üzerinde SSH sunucusu kurmak ve yapılandırmak, uzak Linux sunucularıyla çalışan her sistem yöneticisi veya geliştirici için temel bir beceridir. Bu kılavuzu takip ederek:
- ✅ Debian üzerine OpenSSH Server kurdunuz
- ✅ Varsayılan portu değiştirerek, root girişini devre dışı bırakarak ve kullanıcı erişimini kısıtlayarak SSH yapılandırmasını güçlendirdiniz
- ✅ Parolasız, güvenli girişler için SSH anahtar tabanlı kimlik doğrulamasını kurdunuz
- ✅ SSH portunuzu korumak için güvenlik duvarı kurallarını yapılandırdınız
- ✅ Kaba kuvvet saldırılarına karşı savunmak için Fail2Ban’ı uyguladınız
- ✅ İzleme ve bakım rutini oluşturdunuz
Düzgün şekilde güvenliği sağlanmış bir SSH sunucusu, saldırı yüzeyinizi önemli ölçüde azaltır ve altyapınızı uzaktan yönetmek için güvenilir, şifreli bir ağ geçidi sağlar. İster ilk sunucunuzla yeni başlıyor olun ister bir üretim ortamını güçlendiriyor olun, bu uygulamalar güvenli bir Linux sisteminin temel yapı taşlarıdır.
