15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
29.10.2024

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 -y

CentOS / RHEL / AlmaLinux / Rocky Linux

sudo yum install openssh-server -y

Fedora

sudo dnf install openssh-server -y

Arch Linux

sudo pacman -S openssh

Kurulumun 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 ssh

SSH’yi Önyüklemede Başlayacak Şekilde Etkinleştirme

sudo systemctl enable ssh

Servisin Çalıştığını Doğrulama

sudo systemctl status ssh

Sağ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_config

Bu 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.bak

Dosyayı tercih ettiğiniz metin düzenleyiciyle açın:

sudo nano /etc/ssh/sshd_config

Herhangi 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 -t

Hata döndürülmezse değişiklikleri uygulayın:

sudo systemctl restart ssh

Adı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 22

Yorumu kaldırın ve özel bir port ayarlayın (halihazırda kullanımda olmayan 1024 ile 65535 arasında bir sayı seçin):

Port 2222

Dosyayı 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 no

Kullanı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.0

Adı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:

  1. Bir dosya yolu seçin (varsayılan ~/.ssh/id_ed25519 kabul etmek için Enter‘a basın)
  2. İ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.pubGenel 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_ip

username 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_ip

Parola 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 verbose

firewalld 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 --reload

SSH 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 tcp

Bu, 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 = 600

Fail2Ban’ı başlatın ve etkinleştirin:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

7.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 3

Bu yapılandırmayla, yalnızca şunu yazarak bağlanabilirsiniz:

ssh myserver

7.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-authenticator

Ardı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

SorunOlası NedenÇözüm
Connection refusedSSH çalışmıyor veya yanlış portsystemctl 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 failedSunucu parmak izi değişti~/.ssh/known_hosts dosyasından eski girişi kaldırın
Connection timed outGüvenlik duvarı portu engelliyorUFW/firewalld kurallarını ve bulut güvenlik gruplarını kontrol edin
Yapılandırma değişikliğinden sonra kilitlenmesshd_config içinde yanlış yapılandırmaDeğ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 -t

Eksiksiz 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 VERBOSE

Hosting 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_keys dosyası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ı
  • [ ] MaxAuthTries 3 veya daha az olarak ayarlandı
  • [ ] Boşta kalan oturumları sonlandırmak için ClientAliveInterval yapılandırıldı
  • [ ] sshd_config sözdizimi sudo sshd -t ile 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:

  1. OpenSSH sunucusunu kurdunuz ve başlattınız
  2. Varsayılan portu değiştirdiniz ve root girişini devre dışı bıraktınız
  3. Kriptografik olarak güçlü anahtar tabanlı kimlik doğrulamayı uyguladınız
  4. Erişimi kısıtlamak için güvenlik duvarı kurallarını yapılandırdınız
  5. Kaba kuvvet girişimlerini engellemek için Fail2Ban’ı dağıttınız
  6. 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.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın