Linux’ta SSH Nasıl Kurulur ve Yapılandırılır: 2025 İçin Eksiksiz Güvenlik Rehberi
SSH, sunucunuzdaki en kritik erişim noktasıdır. Yanlış yapılandırılmış bir SSH kurulumu, interneti tarayan otomatik botlar tarafından beş dakika içinde ele geçirilebilir. İster bir VPS Hosting ortamı, ister bare-metal bir makine, isterse bir bulut örneği yönetiyor olun, SSH’yi ilk günden itibaren doğru şekilde kilitlemek tartışmasızdır.
Bu kılavuzda OpenSSH’yi nasıl kuracağınızı, güvenli şekilde yapılandıracağınızı, anahtar tabanlı kimlik doğrulamayı nasıl uygulayacağınızı ve 2025’te bir Linux sunucusunda üretim düzeyinde sertleştirme tekniklerini nasıl uygulayacağınızı öğreneceksiniz.
SSH Nedir ve Neden Önemlidir?
SSH (Secure Shell), kullanıcıların internet gibi güvenli olmayan bir ağ üzerinden uzak bir sisteme güvenli şekilde bağlanmasına olanak tanıyan kriptografik bir ağ protokolüdür. İstemci ile sunucu arasında iletilen tüm veriler tam olarak şifrelenir; bu da onu uzak sunucu yönetimi için endüstri standardı haline getirir.
Varsayılan olarak SSH, port 22 üzerinde çalışır ve şunları destekler:
- Sunuculara ve sanal makinelere uzaktan giriş
- SCP ve SFTP aracılığıyla güvenli dosya transferi
- Uzaktan komut yürütme ve betiklenmiş otomasyon
- Güvenli trafik yönlendirmesi için port yönlendirme ve tünelleme
- Grafik uygulama erişimi için X11 yönlendirme
SSH, birincil yönetim arayüzünüzdür. Buna göre değerlendirin.
Adım 1: OpenSSH Sunucusunu Kurma
Modern Linux dağıtımlarının çoğu OpenSSH ile önceden kurulu olarak gelir. Eksikse, dağıtımınız için uygun paket yöneticisini kullanarak kurun.
Ubuntu / Debian
sudo apt update
sudo apt install openssh-server -yCentOS / RHEL / AlmaLinux / Rocky Linux
sudo yum install openssh-server -yFedora
sudo dnf install openssh-server -yArch Linux
sudo pacman -S opensshKurulumun ardından hem OpenSSH sunucusu (sshd) hem de OpenSSH istemcisi kullanılabilir hale gelir; bu sayede gelen bağlantıları kabul edebilir ve diğer uzak sunuculara bağlanabilirsiniz.
Adım 2: SSH Servisini Başlatma ve Etkinleştirme
Kurulduktan sonra SSH daemon’ını (sshd) başlatmanız ve sistem önyüklemesinde otomatik olarak başlayacak şekilde yapılandırmanız gerekir.
SSH Servisini Başlatma
sudo systemctl start sshSSH’yi Önyüklemede Başlayacak Şekilde Etkinleştirme
sudo systemctl enable sshServisin Çalıştığını Doğrulama
sudo systemctl status sshSağlıklı bir çıktı, yeşil renkte active (running) gösterecektir. Herhangi bir hata görürseniz, tanılama ayrıntıları için journalctl -xe ile sistem günlüklerinizi kontrol edin.
Adım 3: SSH Yapılandırma Dosyasını Anlama
SSH’nin davranışı tek bir birincil yapılandırma dosyası tarafından yönetilir:
/etc/ssh/sshd_configBu dosya her şeyi kontrol eder — dinleme portu, kimlik doğrulama yöntemleri, izin verilen kullanıcılar, giriş kısıtlamaları ve daha fazlası. Değişiklik yapmadan önce her zaman bir yedek oluşturun:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakDosyayı tercih ettiğiniz metin düzenleyiciyle açın:
sudo nano /etc/ssh/sshd_configHerhangi bir değişiklik yaptıktan sonra, kendinizi dışarıda kilitlememek için servisi yeniden başlatmadan önce her zaman yapılandırma sözdizimini doğrulayın:
sudo sshd -tHata döndürülmezse değişiklikleri uygulayın:
sudo systemctl restart sshAdım 4: Temel SSH Yapılandırma Değişiklikleri
4.1 Varsayılan SSH Portunu Değiştirme
Port 22, otomatik tarayıcıların ve kaba kuvvet botlarının hedef aldığı ilk porttur. Bunu standart dışı bir porta değiştirmek, günlüklerinizdeki gürültüyü önemli ölçüde azaltır ve fırsatçı saldırılara maruz kalmayı düşürür.
sshd_config içinde şu satırı bulun:
#Port 22Yorumu kaldırın ve özel bir port ayarlayın (halihazırda kullanımda olmayan 1024 ile 65535 arasında bir sayı seçin):
Port 2222Dosyayı kaydedin, doğrulayın ve SSH’yi yeniden başlatın:
sudo sshd -t && sudo systemctl restart ssh> Önemli: Portu değiştirdikten hemen sonra güvenlik duvarı kurallarınızı güncelleyin (bkz. Adım 6). Bunu yapmazsanız sunucunuzdan kilitlenirsiniz.
4.2 SSH Üzerinden Root Girişini Devre Dışı Bırakma
SSH üzerinden doğrudan root girişine izin vermek, en yaygın ve tehlikeli yanlış yapılandırmalardan biridir. Bir saldırgan root parolasını tahmin eder veya kaba kuvvetle kırarsa, sisteminizin tam ve kısıtlamasız kontrolüne sahip olur.
Bu yönergeyi bulun:
PermitRootLogin yesŞu şekilde değiştirin:
PermitRootLogin noKullanıcılar standart bir hesapla giriş yapmalı ve gerektiğinde sudo kullanarak ayrıcalıkları yükseltmelidir. Bu, temel bir denetim katmanı oluşturur — her ayrıcalıklı eylem, adlandırılmış bir kullanıcı hesabına karşı günlüğe kaydedilir.
4.3 Anahtar Tabanlı Kimlik Doğrulamayı Zorunlu Kılma ve Parolaları Devre Dışı Bırakma
Parola tabanlı kimlik doğrulama, doğası gereği kaba kuvvet saldırılarına karşı savunmasızdır. SSH anahtar çiftleri — matematiksel olarak bağlantılı bir genel/özel anahtar kombinasyonu — üstel olarak daha güvenlidir.
Aşağıdaki yönergeleri bulun ve ayarlayın:
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no> Uyarı: Parola kimlik doğrulamasını yalnızca anahtar tabanlı girişi başarıyla test ettikten sonra devre dışı bırakın. Çalışan bir anahtar olmadan parolaları devre dışı bırakmak sizi kalıcı olarak kilitler.
4.4 Ek Sertleştirme Yönergeleri
Sertleştirilmiş bir üretim yapılandırması için sshd_config içine şu ayarları ekleyin veya değiştirin:
# Restrict login to specific users (replace 'youruser' with actual usernames)
AllowUsers youruser
# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2
# Limit authentication attempts per connection
MaxAuthTries 3
# Disable empty passwords
PermitEmptyPasswords no
# Disable X11 forwarding if not needed
X11Forwarding no
# Use only modern, secure protocol version
Protocol 2
# Restrict SSH to specific network interface (optional, replace with your IP)
ListenAddress 0.0.0.0Adım 5: SSH Anahtar Çiftleri Oluşturma ve Dağıtma
SSH anahtar kimlik doğrulaması, parolaların yerini kriptografik kimlik kanıtıyla alır. Doğru şekilde nasıl kurulacağı aşağıda açıklanmıştır.
Adım 5.1: Yerel Makinenizde Bir Anahtar Çifti Oluşturma
Bu komutu yerel iş istasyonunuzda çalıştırın (sunucuda değil):
ssh-keygen -t ed25519 -C "your_email@example.com"> Neden Ed25519? Ed25519, eski RSA algoritmasından daha hızlı, daha güvenli ve daha kısa anahtarlar üreten modern bir eliptik eğri algoritmasıdır. 2025’te önerilen seçimdir.
Sisteminiz veya araçlarınız uyumluluk nedenleriyle RSA gerektiriyorsa, 4096 bitlik bir anahtar kullanın:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Şunları yapmanız istenecektir:
- Bir dosya yolu seçin (varsayılan
~/.ssh/id_ed25519kabul etmek için Enter‘a basın) - İsteğe bağlı bir parola belirleyin (önemle önerilir — bu, özel anahtarınızı beklemedeyken şifreler)
Bu iki dosya oluşturur:
~/.ssh/id_ed25519— Özel anahtarınız. Asla paylaşmayın. Asla bir sunucuya kopyalamayın.~/.ssh/id_ed25519.pub— Genel anahtarınız. Sunuculara yüklenen budur.
Adım 5.2: Genel Anahtarı Sunucuya Kopyalama
Genel anahtarınızı uzak sunucuya güvenli şekilde aktarmak için ssh-copy-id kullanın:
ssh-copy-id -p 2222 username@your_server_ipusername yerine sunucu hesap adınızı, your_server_ip yerine gerçek IP adresini yazın.
Bu komut, genel anahtarınızı sunucudaki ~/.ssh/authorized_keys dosyasına doğru izinlerle otomatik olarak ekler.
Manuel yöntem (ssh-copy-id kullanılamıyorsa):
cat ~/.ssh/id_ed25519.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Adım 5.3: Anahtar Tabanlı Girişi Test Etme
Parola kimlik doğrulamasını devre dışı bırakmadan önce, anahtar tabanlı girişin çalıştığını doğrulayın:
ssh -p 2222 username@your_server_ipParola istenmeden (veya yalnızca anahtar parolanız için) başarıyla bağlanırsanız, anahtar tabanlı kimlik doğrulama doğru çalışıyor demektir. Artık sshd_config içinde parola kimlik doğrulamasını güvenle devre dışı bırakabilirsiniz.
Adım 6: SSH için Güvenlik Duvarını Yapılandırma
Güvenlik duvarı, ilk savunma hattınızdır. Her zaman yalnızca kullandığınız SSH portuna izin verecek şekilde yapılandırın.
UFW Kullanımı (Ubuntu / Debian)
# Allow your custom SSH port
sudo ufw allow 2222/tcp
# Enable the firewall
sudo ufw enable
# Verify the rules
sudo ufw status verbosefirewalld Kullanımı (CentOS / RHEL / Fedora)
# Add the custom SSH port
sudo firewall-cmd --permanent --add-port=2222/tcp
# Remove the default port 22 (optional, after confirming new port works)
sudo firewall-cmd --permanent --remove-service=ssh
# Reload firewall rules
sudo firewall-cmd --reloadSSH Erişimini IP Adresine Göre Kısıtlama
Maksimum güvenlik için SSH erişimini yalnızca bilinen, güvenilir IP adresleriyle sınırlayın:
# UFW example: allow SSH only from a specific IP
sudo ufw allow from 203.0.113.10 to any port 2222 proto tcpBu, tüm yönetimsel erişimi sabit bir ofis veya VPN IP aralığından kontrol ettiğiniz Dedicated Servers üzerinde özellikle etkilidir.
Adım 7: Gelişmiş Güvenlik Önlemleri
7.1 Fail2Ban’ı Kurma ve Yapılandırma
Fail2Ban, SSH günlük dosyalarını izler ve kaba kuvvet etkinliği belirtileri gösteren IP adreslerini otomatik olarak engeller.
# Install Fail2Ban
sudo apt install fail2ban -y # Ubuntu/Debian
sudo yum install fail2ban -y # CentOS/RHEL
# Create a local configuration file
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local/etc/fail2ban/jail.local dosyasını düzenleyin ve SSH jail’ini yapılandırın:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600Fail2Ban’ı başlatın ve etkinleştirin:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban7.2 İstemci Tarafı Yönetim için SSH Yapılandırma Dosyası Kullanma
Yerel makinenizde, bağlantıları basitleştirmek ve güvenlik ayarlarını uygulamak için ~/.ssh/config dosyasını oluşturun veya düzenleyin:
Host myserver
HostName your_server_ip
User youruser
Port 2222
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3Bu yapılandırmayla, yalnızca şunu yazarak bağlanabilirsiniz:
ssh myserver7.3 SSH için İki Faktörlü Kimlik Doğrulama (2FA)
Üretim veritabanları, finansal sistemler veya uyumluluk düzenlemesine tabi altyapı gibi en yüksek düzeyde erişim güvenliği gerektiren ortamlar için, SSH anahtarlarının yanı sıra Google Authenticator veya Authy kullanarak TOTP tabanlı iki faktörlü kimlik doğrulama eklemeyi düşünün.
sudo apt install libpam-google-authenticator -y
google-authenticatorArdından hem anahtar hem de tek kullanımlık parola gerektirmek için PAM ve sshd_config yapılandırın. Bu, gerçek bir çok faktörlü kimlik doğrulama akışı oluşturur.
Adım 8: SSH’yi Test Etme ve Sorun Giderme
Yapılandırmanızı tamamladıktan sonra, her şeyin beklendiği gibi çalıştığını sistematik olarak doğrulayın.
Bağlantı Testi
ssh -p 2222 -v username@your_server_ip-v bayrağı, bağlantının her aşaması hakkında ayrıntılı hata ayıklama bilgilerini yazdıran ayrıntılı modu etkinleştirir — kimlik doğrulama hatalarını teşhis etmek için paha biçilmezdir.
Yaygın Sorunlar ve Çözümler
| Sorun | Olası Neden | Çözüm |
|---|---|---|
Connection refused | SSH çalışmıyor veya yanlış port | systemctl status ssh ve güvenlik duvarı kurallarını kontrol edin |
Permission denied (publickey) | Anahtar authorized_keys içinde değil veya yanlış izinler | ~/.ssh/authorized_keys dosyasının chmod 600 ile mevcut olduğunu doğrulayın |
Host key verification failed | Sunucu parmak izi değişti | ~/.ssh/known_hosts dosyasından eski girişi kaldırın |
Connection timed out | Güvenlik duvarı portu engelliyor | UFW/firewalld kurallarını ve bulut güvenlik gruplarını kontrol edin |
| Yapılandırma değişikliğinden sonra kilitlenme | sshd_config içinde yanlış yapılandırma | Değişiklikleri geri almak için konsol/KVM erişimini kullanın |
Tanılama Komutları
# Check SSH service status
sudo systemctl status ssh
# View real-time SSH logs
sudo journalctl -u ssh -f
# Check which port SSH is listening on
sudo ss -tlnp | grep sshd
# Test configuration file syntax
sudo sshd -tEksiksiz Sertleştirilmiş sshd_config Referansı
Bu kılavuzdaki tüm güvenlik önerilerini içeren üretime hazır bir sshd_config aşağıda verilmiştir:
# Network
Port 2222
ListenAddress 0.0.0.0
Protocol 2
# Authentication
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
MaxAuthTries 3
LoginGraceTime 30
# Session Management
ClientAliveInterval 300
ClientAliveCountMax 2
MaxSessions 5
# Access Control
AllowUsers youruser
# Features (disable what you don't need)
X11Forwarding no
AllowTcpForwarding no
GatewayPorts no
PermitUserEnvironment no
# Logging
SyslogFacility AUTH
LogLevel VERBOSEHosting Altyapınızın SSH Güvenliği için Önemi
SSH yapılandırmanızın güvenliği izole olarak var olmaz — büyük ölçüde temel altyapıya bağlıdır. Düzgün sertleştirilmiş bir SSH kurulumu, halihazırda şunları sağlayan bir sunucuya dağıtıldığında en etkilidir:
- Hacimsel saldırıları SSH portunuza ulaşmadan önce absorbe etmek için DDoS koruması
- Hızlı günlük yazmaları ve hızlı Fail2Ban yanıt süreleri için NVMe depolama
- Yük altında bağlantı kararlılığını sağlamak için 1 Gbps ağ portları
- Yanlışlıkla kendinizi kilitlerseniz bant dışı kurtarma yöntemi olarak KVM/konsol erişimi
AlexHost’un VPS Hosting planları, tam root erişimi ve özel güvenlik duvarı yapılandırmaları desteğiyle yukarıdakilerin tümünü içerir — bu da onları bu kılavuzda açıklanan sertleştirilmiş SSH kurulumunu dağıtmak için ideal kılar.
SSH’nin yanı sıra sunucunuzu yönetmek için bir kontrol paneline ihtiyaç duyarsanız, cPanel, Plesk ve DirectAdmin dahil seçenekler için VPS Control Panels sayfasını inceleyin. Birden fazla web mülkünü yöneten ekipler için Shared Web Hosting, SSH sertleştirmesinin altyapı düzeyinde ele alındığı yönetilen bir ortam sunar.
SSH ile sertleştirilmiş sunucunuzun yanında SSL ile güvenli web hizmetleri çalıştırıyorsanız, kurulumunuzu güvenilir bir SSL Certificates çözümüyle eşleştirmek, tüm herkese açık hizmetlerinizde uçtan uca şifreleme sağlar.
SSH Güvenlik Kontrol Listesi
SSH yapılandırmanızı üretime hazır saymadan önce bu kontrol listesini kullanın:
- [ ] OpenSSH sunucusu kuruldu ve çalışıyor
- [ ] Varsayılan port 22 özel bir porta değiştirildi
- [ ] Root girişi devre dışı bırakıldı (
PermitRootLogin no) - [ ] Ed25519 veya RSA-4096 anahtar çifti oluşturuldu
- [ ] Genel anahtar sunucudaki
authorized_keysdosyasına dağıtıldı - [ ] Anahtar tabanlı giriş başarıyla test edildi
- [ ] Parola kimlik doğrulaması devre dışı bırakıldı
- [ ] Güvenlik duvarı yalnızca yeni SSH portuna izin verecek şekilde yapılandırıldı
- [ ] Fail2Ban kuruldu ve yapılandırıldı
- [ ]
MaxAuthTries3 veya daha az olarak ayarlandı - [ ] Boşta kalan oturumları sonlandırmak için
ClientAliveIntervalyapılandırıldı - [ ]
sshd_configsözdizimisudo sshd -tile doğrulandı - [ ] Bant dışı konsol erişimi onaylandı (KVM/VNC)
Sonuç
SSH’yi doğru şekilde kurmak ve yapılandırmak, Linux sistem yönetimindeki en temel becerilerden biridir. Varsayılan bir SSH kurulumu bir yüktür; sertleştirilmiş bir SSH yapılandırması ise bir varlıktır. Bu kılavuzu takip ederek şunları gerçekleştirdiniz:
- OpenSSH sunucusunu kurdunuz ve başlattınız
- Varsayılan portu değiştirdiniz ve root girişini devre dışı bıraktınız
- Kriptografik olarak güçlü anahtar tabanlı kimlik doğrulamayı uyguladınız
- Erişimi kısıtlamak için güvenlik duvarı kurallarını yapılandırdınız
- Kaba kuvvet girişimlerini engellemek için Fail2Ban’ı dağıttınız
- Eksiksiz bir sorun giderme metodolojisi oluşturdunuz
Düzgün yapılandırıldığında SSH, uzak yönetim, otomasyon ardışık düzenleri ve sistemler arasındaki şifreli iletişim için güçlü, güvenilir ve güvenli bir ağ geçidi haline gelir. Donanım düzeyinde DDoS azaltma özelliğine sahip AlexHost’un Dedicated Servers gibi sağlam hosting altyapısıyla birleştirildiğinde, gerçekten ele geçirilmesi zor bir temel elde edersiniz.
SSH yapılandırmanızı periyodik olarak gözden geçirin. Anahtarlarınızı yıllık olarak değiştirin. Günlüklerinizi izleyin. Güvenlik tek seferlik bir görev değil — süregelen bir uygulamadır.
