SSH (Secure Shell), bir sunucuya şifreli bağlantı üzerinden komut satırıyla erişmenin standart yoludur. İnternete açık her Linux sunucunun SSH portu, dakikalar içinde otomatik botlar tarafından denenmeye başlar. Bu yüzden SSH'ı doğru yapılandırmak, sunucu güvenliğinin ilk ve en önemli adımıdır.
Parola yerine anahtar
Parolalar tahmin edilebilir, sızdırılabilir ve kaba kuvvet saldırılarıyla denenebilir. SSH anahtarları ise iki parçadan oluşur:
- Özel anahtar (private key): Sizin bilgisayarınızda kalır, kimseyle paylaşılmaz.
- Açık anahtar (public key): Sunucuya eklenir.
Sunucu, yalnızca eşleşen özel anahtara sahip olanı içeri alır. Tahmin edilmesi pratikte imkânsızdır.
Anahtar oluşturma ve ekleme
# Kendi bilgisayarınızda (Windows, macOS, Linux)
ssh-keygen -t ed25519 -C "furkan@dizustu"
# Açık anahtarı sunucuya kopyalama
ssh-copy-id kullanici@sunucu-ip
ed25519 güncel, hızlı ve güvenli bir algoritmadır. Özel anahtarınızı bir parola (passphrase) ile korumak, cihazınız çalınsa bile ek bir güvenlik katmanı sağlar.
Sunucu sertleştirme
Anahtarla girişin çalıştığını doğruladıktan sonra /etc/ssh/sshd_config dosyasında:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
Ardından servisi yeniden başlatın. Önemli: Mevcut oturumu kapatmadan yeni bir terminalde bağlantıyı test edin; aksi halde kendinizi sunucunun dışında bırakabilirsiniz.
Ek önlemler:
- fail2ban: Tekrarlayan başarısız denemeleri yapan IP adreslerini geçici olarak engeller.
- Güvenlik duvarı: SSH'a yalnızca belirli IP adreslerinden erişime izin vermek mümkünse en etkili korumadır.
- Port değiştirmek: Logları azaltır ama tek başına güvenlik önlemi sayılmaz.
SSH ile dosya aktarımı
scp yedek.sql kullanici@sunucu:/home/kullanici/
rsync -avz ./yayin/ kullanici@sunucu:/var/www/uygulama/
rsync yalnızca değişen dosyaları aktardığı için dağıtımlarda çok kullanışlıdır. Otomatik dosya aktarımları için bkz. SFTP otomasyonu.
Kolay bağlantı için yapılandırma
~/.ssh/config dosyası, uzun komutları kısaltır:
Host uretim
HostName 203.0.113.10
User deploy
IdentityFile ~/.ssh/id_ed25519
Artık ssh uretim yazmanız yeterlidir.
Ekip ve anahtar yönetimi
- Her kişinin kendi anahtarı olmalı; anahtar paylaşılmamalıdır.
- Ekipten ayrılan kişinin açık anahtarı sunuculardan hemen silinmelidir.
- CI/CD için ayrı, yetkisi kısıtlı dağıtım anahtarları kullanılmalıdır. Bkz. CI/CD.
Bu, en az yetki ilkesinin sunuculara uygulanmış halidir.
Sık sorulan sorular
Özel anahtarımı kaybedersem ne olur?
Sunucuya o anahtarla giremezsiniz. Sağlayıcının konsol erişimi veya başka bir yetkili anahtarla yeni anahtar eklenir. Bu yüzden yedek erişim yolunu önceden planlayın.
Windows'ta SSH kullanılabilir mi?
Evet. Windows 10 ve 11'de OpenSSH istemcisi yerleşik olarak gelir.
Sonuç
Anahtar tabanlı giriş, kapalı parola girişi ve basit bir güvenlik duvarı; bir sunucuyu otomatik saldırıların büyük çoğunluğuna karşı korur. Bu üç adım, her yeni sunucunun ilk on dakikasında yapılmalıdır.