Furkan KapukayaYazılım geliştirme
Sunucu, Bulut ve DevOps3 dk okuma

SSH Nedir? Anahtarla Güvenli Sunucu Bağlantısı

SSH protokolünün ne olduğu, parola yerine anahtar kullanmanın önemi, ed25519 anahtar oluşturma, sunucu sertleştirme ayarları, fail2ban ve SSH ile dosya aktarımı.

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.