VPS’de SSH Bağlantısı ve Yapılandırması: Tam Güvenlik Rehberi
Secure shell (SSH) erişimi, profesyonel sunucu yönetiminin temelini oluşturur. WordPress sitesi dağıtıyor, Git aracılığıyla kod gönderiyor veya özel uygulamaları yönetiyor olsanız da, SSH size sunucunuza doğrudan şifrelenmiş, kimliği doğrulanmış bir tünel sağlar. Bu kapsamlı rehber her adımda size yol gösterir — ilk bağlantınızdan gerçek dünya saldırılarına karşı kurulumunuzu sağlamlaştırmaya kadar — böylece VPS Hosting ortamınızı güvenle yönetebilirsiniz.
SSH Güvenliğinin Neden Önemli Olduğu
Herkese açık olan her sunucu, sürekli otomatik brute-force saldırılarına maruz kalır. Bir VPS canlı olduktan birkaç dakika sonra, botlar 22 numaralı portu taramaya ve yaygın kullanıcı adı/şifre kombinasyonlarını denemeye başlar. Kötü güvenliği sağlanmış bir SSH yapılandırması, saldırganlar için en yaygın giriş noktalarından biridir.
İyi haber: birkaç kasıtlı yapılandırma değişikliği saldırı yüzeyinizi önemli ölçüde azaltır. NVMe destekli depolama ve yerleşik DDoS koruması gibi güvenilir altyapı ile birleştirildiğinde, düzgün şekilde sertleştirilmiş bir SSH kurulumu size hızlı, dayanıklı ve gerçekten güvenli bir yönetim kanalı sağlar.
Henüz bir barındırma ortamı seçmediyseniz, tam kök erişimi, özel kaynakları ve bu kılavuzda ele alınan her güvenlik önlemini uygulamak için esnekliği içeren VPS Hosting planlarını keşfetmeyi düşünün.
Ön Koşullar
Başlamadan önce, aşağıdakilerin yerinde olduğunu doğrulayın:
| Gereksinim | Ayrıntılar |
|---|---|
| Çalışan bir VPS | Herhangi bir Linux dağıtımı (Ubuntu, Debian, CentOS, AlmaLinux, vb.) yüklü işletim sistemi ile |
| SSH istemcisi | Linux/macOS: yerleşik ssh komutu. Windows: PuTTY, Windows Terminal veya WSL |
| Sunucu IP adresi | Sağlama sonrasında barındırma kontrol panelinizde sağlanır |
| Giriş kimlik bilgileri | Varsayılan kullanıcı adı (root veya sudo özellikli bir kullanıcı) ve ilk şifre |
| Temel terminal bilgisi | Komutları çalıştırma ve nano veya vim ile dosyaları düzenleme yeteneği |
> İpucu: Birden fazla sunucuyu yönetiyorsanız veya SSH’nin yanında grafik bir arayüze ihtiyacınız varsa, komut satırı erişimini tamamlayan cPanel, Plesk ve DirectAdmin gibi seçenekler için VPS Kontrol Panelleri‘ne göz atın.
VPS’nize SSH Üzerinden Bağlanma
Linux veya macOS’ta
Terminal’inizi açın ve şunu çalıştırın:
ssh username@your_server_ipusername yerine gerçek kullanıcı adınızı (yeni bir VPS için genellikle root) ve your_server_ip yerine sunucunuzun genel IP adresini yazın.
Örnek:
ssh root@203.0.113.45İlk bağlantı isteminde:
The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?yes yazın ve Enter tuşuna basın. Bu, sunucunun host anahtarını ~/.ssh/known_hosts dosyanıza ekler. Sonraki bağlantılarda SSH bu parmak izini otomatik olarak doğrulayacaktır — eğer beklenmedik şekilde değişirse, bunu olası bir güvenlik olayı olarak değerlendirin.
İstendiğinde şifrenizi girin.
Windows’ta PuTTY Kullanarak
- putty.org adresinden PuTTY‘i indirin ve açın.
- Host Name (or IP address) alanına sunucunuzun IP adresini girin.
- Port ayarının
22olduğunu ve Connection type ayarınınSSHolduğunu doğrulayın. - Open‘e tıklayın.
- İstendiğinde host anahtarı parmak izini kabul edin.
- Kullanıcı adınızı ve şifrenizi girin.
> Windows 10/11 alternatifi: Windows Terminal ve PowerShell, yerel bir OpenSSH istemcisi içerir. Linux/macOS ile aynı ssh username@your_server_ip söz dizimini kullanabilirsiniz — üçüncü taraf araçlara gerek yoktur.
SSH Sertleştirme: Adım Adım Yapılandırma
Tüm SSH davranışı tek bir yapılandırma dosyası tarafından kontrol edilir:
/etc/ssh/sshd_configYükseltilmiş ayrıcalıklarla açın:
sudo nano /etc/ssh/sshd_configAşağıdaki her sertleştirme adımını izleyin. Tüm değişiklikleri yaptıktan sonra, hizmeti bir kez yeniden başlatacaksınız — sonraki bölümde ele alınmıştır.
Adım 1: Varsayılan SSH Portunu Değiştirin
Port 22, botların taradığı ilk porttur. SSH’yi standart olmayan bir porta taşımak, günlüklerinizdeki otomatik gürültünün büyük çoğunluğunu ortadan kaldırır.
Bu satırı bulun:
#Port 22Seçtiğiniz bir porta değiştirin (1024 ile 65535 arasında başka bir hizmet tarafından kullanılmayan bir numara kullanın):
Port 2222# öğesini kaldırarak satırın açıklamasını kaldırın. CTRL+X ile kaydedin, ardından Y, ardından Enter tuşuna basın.
> Önemli: SSH’yi yeniden başlatmadan önce, güvenlik duvarınızın yeni porta izin verdiğinden emin olun. Aşağıdaki güvenlik duvarı notuna bakın.
Güvenlik duvarınızı güncelleyin (UFW örneği):
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
sudo ufw reloadGüvenlik duvarınızı güncelleyin (firewalld örneği):
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reloadAdım 2: Root Girişini Devre Dışı Bırakın
SSH üzerinden doğrudan root girişine izin vermek önemli bir güvenlik riskidir. Bunun yerine, normal bir kullanıcı olarak oturum açın ve gerektiğinde sudo ile ayrıcalıkları yükseltin.
sshd_config içinde şunu bulun:
PermitRootLogin yesBunu şu şekilde değiştirin:
PermitRootLogin noRoot girişini devre dışı bırakmadan önce, sudo ayrıcalıklarına sahip root olmayan bir kullanıcınız olduğundan emin olun:
# Create a new user
adduser adminuser
# Grant sudo privileges
usermod -aG sudo adminuserRoot girişini devre dışı bırakmadan ve SSH’yi yeniden başlatmadan önce bu kullanıcının oturum açabileceğini ve sudo komutlarını çalıştırabileceğini test edin.
Adım 3: Parola Kimlik Doğrulamasını Devre Dışı Bırakın (Anahtarlar Ayarlandıktan Sonra)
SSH anahtar kimlik doğrulaması yapılandırıldıktan sonra (sonraki bölüm), parola tabanlı girişi tamamen devre dışı bırakarak kaba kuvvet riskini ortadan kaldırın:
PasswordAuthentication noAyrıca bu ilgili yönergelerin ayarlandığından emin olun:
ChallengeResponseAuthentication no
UsePAM noAdım 4: Ek Önerilen Yönergeler
Kapsamlı bir sertleştirme temeli için sshd_config içinde bu ayarları ekleyin veya doğrulayın:
# Limit authentication attempts per connection
MaxAuthTries 3
# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2
# Disable empty passwords
PermitEmptyPasswords no
# Restrict SSH to specific users (replace 'adminuser' with your username)
AllowUsers adminuser
# Use only strong protocol version
Protocol 2
# Disable X11 forwarding if not needed
X11Forwarding noSSH Anahtar Kimlik Doğrulaması Kurulumu
SSH anahtar kimlik doğrulaması şifreleri bir şifreleme anahtar çifti ile değiştirir: yerel makinenizde kalan bir özel anahtar ve sunucuda bulunan bir genel anahtar. Bir saldırgan kullanıcı adınızı bilse bile, özel anahtarınız olmadan kimlik doğrulaması yapamaz.
Adım 1: SSH Anahtar Çifti Oluşturun (Yerel Makinenizde)
ssh-keygen -t ed25519 -C "your_email@example.com"> Neden Ed25519? Eski RSA algoritmasından daha hızlı ve daha güvenlidir. Sisteminiz uyumluluk için RSA gerektiriyorsa, bunun yerine ssh-keygen -t rsa -b 4096 kullanın.
Kaydetme konumunu seçmeniz (varsayılan ~/.ssh/id_ed25519 iyidir) ve bir parola ayarlamanız istenecektir. Her zaman bir parola ayarlayın — özel anahtarınızı şifreler, böylece makinenize fiziksel erişim sunucularınızı otomatik olarak tehlikeye atmaz.
Çıktı:
Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.comAdım 2: Genel Anahtarı VPS’nize Kopyalayın
En kolay yöntem ssh-copy-id kullanır:
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ipBu komut:
- Şifre kimlik doğrulaması kullanarak sunucunuza bağlanır.
- Sunucuda
~/.ssh/authorized_keysoluşturur (mevcut değilse). - Genel anahtarınızı bu dosyaya ekler.
- Doğru izinleri otomatik olarak ayarlar.
Manuel yöntem (ssh-copy-id kullanılamıyorsa):
# On your local machine, display your public key
cat ~/.ssh/id_ed25519.pub
# On your server, add it manually
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "paste-your-public-key-here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysAdım 3: Şifreleri Devre Dışı Bırakmadan Önce Anahtar Tabanlı Girişi Doğrulayın
Anahtar tabanlı girişin çalıştığını doğrulayana kadar şifre kimlik doğrulamasını devre dışı bırakmayın. Yeni bir terminal penceresi açın ve test edin:
ssh -i ~/.ssh/id_ed25519 username@your_server_ip -p 2222Şifre istenmeden başarıyla bağlanırsanız (yalnızca anahtar parolanız ayarlandıysa), sshd_config içinde PasswordAuthentication devre dışı bırakmaya devam edin.
SSH Hizmetini Yeniden Başlatma ve Doğrulama
sshd_config dosyasında yapılan tüm değişiklikleri kaydettikten sonra, yeniden başlatmadan önce yapılandırma sözdizimini doğrulayın:
sudo sshd -tHiçbir hata döndürülmezse, SSH daemon’unu yeniden başlatın:
sudo systemctl restart sshdHizmetin başarıyla başlatıldığını kontrol edin:
sudo systemctl status sshdÇıktıda Active: active (running) görmelisiniz.
> Kritik güvenlik ipucu: Yeni yapılandırmayı ayrı bir pencerede test ederken mevcut SSH oturumunuzu açık tutun. Bir şey ters giderse, mevcut oturumunuz etkin kalır ve değişiklikleri geri alabilirsiniz.
Güvenli Yapılandırmanızı Test Etme
Test 1: Yeni Bağlantı Noktasında Anahtarınızla Bağlanın
Yerel makinenizden:
ssh username@your_server_ip -p 2222Beklenen sonuç: SSH anahtarınızı kullanarak oturum açtınız (anahtar parolanız için istenebilir, ancak sunucu parolanız için değil).
Test 2: Root Girişinin Engellenmesini Doğrulayın
ssh root@your_server_ip -p 2222Beklenen sonuç:
Permission denied (publickey).veya
root@your_server_ip: Permission deniedTest 3: Parola Kimlik Doğrulamasının Devre Dışı Bırakıldığını Doğrulayın
ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=noBeklenen sonuç:
Permission denied (publickey).Parola kimlik doğrulaması hala etkinleştirilmiş olsaydı, bunun yerine bir parola istenir.
Ek Güvenlik Sağlamlaştırması: Fail2Ban
Fail2Ban, günlük dosyalarını izler ve kötü amaçlı etkinlik belirtileri gösteren IP adreslerini otomatik olarak yasaklar — örneğin tekrarlanan başarısız SSH oturum açma girişimleri. SSH sağlamlaştırma adımlarının yukarıdaki temel tamamlayıcısıdır.
Fail2Ban’ı Yükleyin
Ubuntu/Debian:
sudo apt update && sudo apt install fail2ban -yCentOS/AlmaLinux/RHEL:
sudo dnf install epel-release -y
sudo dnf install fail2ban -ySSH için Fail2Ban’ı Yapılandırın
Yerel bir geçersiz kılma dosyası oluşturun (varsayılan jail.conf dosyasını asla doğrudan düzenlemeyin):
sudo nano /etc/fail2ban/jail.localAşağıdakini ekleyin:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = 2222
logpath = %(sshd_log)s
backend = %(sshd_backend)sport öğesini özel SSH portunuzla eşleşecek şekilde ayarlayın. Kaydedin, ardından Fail2Ban’ı etkinleştirin ve başlatın:
sudo systemctl enable fail2ban
sudo systemctl start fail2banEtkin yasakları ve hapishane durumunu kontrol edin:
sudo fail2ban-client status sshdSSH Anahtarlarınızı ve Yapılandırmanızı Yedekleme
Kilitli bir sunucu ciddi bir sorundur. Bunu önlemek için şu uygulamaları izleyin:
- Özel anahtarınızı şifreli bir parola yöneticisine veya çevrimdışı depolamaya yedekleyin.
- Değişiklik yapmadan önce
sshd_configkopyasını saklayın:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - SSH erişimini kaybederseniz yedek olarak barındırma sağlayıcınızın bant dışı konsolunu (kontrol paneli aracılığıyla VNC/KVM erişimi) kullanın.
- Özel portunuzu belgeleyin — sunucular arasında geçiş yaparken
2222unutmak kolaydır.
SSH’yi Doğru Hosting Altyapısıyla Eşleştirmek
Güvenli bir SSH yapılandırması, altında yatan altyapı kadar güçlüdür. Bu tamamlayıcı hizmetleri göz önünde bulundurun:
- Dedicated Servers — Maksimum performans ve tam donanım izolasyonu gerektiren iş yükleri için, dedicated sunucular fiziksel ve yazılım katmanlarının her ikisine de tam kontrol sağlar; SSH yapılandırması da buna dahildir.
- SSL Certificates — Uygulamalarınızın web tarafını güvenilir SSL/TLS sertifikaları ile güvence altına alın; sunucunuzun arka ucu için SSH güvenliğini tamamlayın.
- Domain Registration — Hosting’inizle birlikte alan adınızı kaydedin ve yönetin; DNS tabanlı erişim kontrolleri ve sunucu ana bilgisayar adlarını yapılandırmayı kolaylaştırın.
Sonuç
Düzgün şekilde yapılandırılmış bir SSH kurulumu, herhangi bir Linux sunucusuna yapabileceğiniz en yüksek etkili güvenlik iyileştirmelerinden biridir. Uyguladığınız şeyleri özetlemek gerekirse:
| Güvenlik Önlemi | Fayda |
|---|---|
| Özel SSH portu | Otomatik port-22 taramasını ortadan kaldırır |
| Root girişinin devre dışı bırakılması | En çok hedeflenen hesabı uzaktan erişimden kaldırır |
| SSH anahtar kimlik doğrulaması | Tahmin edilebilir şifreleri kriptografik kanıtla değiştirir |
| Şifre kimlik doğrulamasının devre dışı bırakılması | Brute-force saldırı vektörünü tamamen kapatır |
| Fail2Ban | Kalıcı saldırganları otomatik olarak engeller |
MaxAuthTries & zaman aşımları | Yavaş veya dağıtılmış saldırılardan maruziyeti sınırlar |
Bu önlemler birlikte katmanlı bir savunma oluşturmak için çalışır — her biri kendi başına anlamlıdır ve kombinasyon halinde önemli ölçüde daha güçlüdür.
İster tek bir WordPress sitesi çalıştırıyor ister bir uygulama sunucuları filosunu yönetiyor olun, sertleştirilmiş bir SSH yapılandırmasıyla başlamak sizi kontrol sahibi yapar. Bunu güvenilir VPS Hosting altyapısıyla eşleştirin, anahtarlarınızı yedekleyin ve uzun süre dayanacak şekilde inşa edilmiş güvenli, profesyonel bir sunucu ortamına sahip olacaksınız.
tasarruf edin