Sunucu Yönetimi & Linux

    SSH Nedir? Sunucuya Güvenli SSH Bağlantısı ve Anahtar Kimlik Doğrulama

    SSH protokolünü, parola yerine anahtar kimlik doğrulamayı ve sunucunuzu brute-force saldırılarına karşı sertleştirmenin pratik yollarını uygulamalı olarak anlatan rehber.

    9 dk okuma Güncellendi: 1 Temmuz 2026

    Uzaktaki bir sunucuyu yönetmek söz konusu olduğunda ilk elinize alacağınız araç SSH'dir. İster bir web sitesi yayınlayın, ister bir veritabanını ayarlayın, güvenli bir kabuk (shell) üzerinden bağlanmadan neredeyse hiçbir işi çözemezsiniz. Bu rehberde SSH protokolünün ne olduğunu, parola ile anahtar kimlik doğrulama arasındaki farkı, ssh-keygen ile kendi anahtar çiftinizi nasıl üreteceğinizi ve hepsinden önemlisi sunucunuzu saldırılara karşı nasıl sertleştireceğinizi göreceksiniz.

    Anlatım baştan sona çalışan komutlarla ilerliyor ve her adımın neden gerekli olduğunu tek tek açıklıyor. Konuya yeniyseniz sırayla takip edin; deneyimliyseniz sshd_config sertleştirme bölümünü hızlı bir başvuru kartı gibi kullanabilirsiniz. Buradaki hedef yalnızca "bağlanmak" değil, güvenli biçimde bağlanmaktır.

    SSH Nedir ve Nasıl Çalışır?#

    SSH (Secure Shell), iki bilgisayar arasında şifreli bir kanal açan bir ağ protokolüdür. Standart olarak 22 numaralı TCP portu üzerinden çalışır ve istemci (sizin bilgisayarınız) ile sunucu arasında gidip gelen tüm trafiği baştan sona şifreler. Böylece iki uç arasındaki ağı dinleyen biri paketlerinizi yakalasa bile ne yazdığınız komutları ne de parolanızı çözebilir.

    SSH öncesinde yaygın kullanılan telnet ve rlogin gibi araçlar veriyi düz metin olarak taşıyordu; parolanız kelimenin tam anlamıyla açıkta dolaşıyordu. SSH bu açığı simetrik ve asimetrik şifrelemeyi birlikte kullanarak kapatır:

    • Anahtar değişimi (key exchange): Bağlantı kurulurken taraflar, kimse dinlese bile ele geçirilemeyen ortak bir oturum anahtarı üzerinde anlaşır.
    • Sunucu doğrulama: Sunucunun bir host key'i vardır. İlk bağlantıda parmak izini (fingerprint) onaylarsınız; sonraki bağlantılarda bu değişirse SSH sizi uyarır. Bu, ortadaki adam (MITM) saldırılarına karşı bir kalkandır.
    • İstemci doğrulama: Kendinizi ya bir parola ile ya da bir anahtar çifti ile kanıtlarsınız. İşin güvenlik açısından en kritik kısmı budur.

    Sunucu tarafında bağlantıları dinleyen servis sshd (SSH daemon), istemci tarafında ise ssh komutudur. Linux ve macOS'te ssh genellikle hazır gelir; Windows'ta ise güncel sürümlerde OpenSSH istemcisi yerleşiktir.

    Sunucuya İlk Bağlantı#

    Temel bağlantı komutu son derece basittir. Kullanıcı adınızı ve sunucunun IP adresini (veya alan adını) verirsiniz:

    ssh [email protected]
    

    Sunucu 22 dışında bir port kullanıyorsa -p bayrağıyla belirtirsiniz:

    ssh -p 2222 [email protected]
    

    İlk bağlantıda şuna benzer bir uyarı görürsünüz:

    The authenticity of host '203.0.113.10' can't be established.
    ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no)?
    

    Bu, sunucunun kimliğini onaylamanızı isteyen normal bir mesajdır. yes yazdığınızda sunucunun parmak izi ~/.ssh/known_hosts dosyasına kaydedilir. Bir daha bu uyarıyı görürseniz ya sunucu yeniden kurulmuştur ya da birileri araya girmeye çalışıyordur — bu durumu ciddiye alın.

    Temel terminal hareketlerine (dizin gezme, dosya düzenleme, izin verme) aşina değilseniz, önce Linux temel komutlar rehberi işinizi çok kolaylaştırır.

    Parola ile Anahtar Kimlik Doğrulama Farkı#

    SSH'e kendinizi tanıtmanın iki yolu vardır ve aralarındaki güvenlik uçurumu hayli derindir.

    Parola kimlik doğrulama, akılda tutması kolay olduğu için çoğu kişinin işe başlarken seçtiği yöntemdir. Ne var ki ciddi bir zaafı vardır: sunucunuzun IP'sini ve açık portunu bilen herkes, saniyede binlerce parola deneyen otomatik brute-force botlarının menziline girer. İnternete açık bir sunucunun sshd günlüğünde her gün yüzlerce başarısız giriş denemesi görmek istisna değil, kuraldır.

    Anahtar kimlik doğrulama ise bir anahtar çifti kullanır:

    • Özel anahtar (private key): Yalnızca sizde kalır, asla kimseyle paylaşılmaz.
    • Genel anahtar (public key): Sunucuya kopyalanır ve herkese verilebilir; tek başına işe yaramaz.

    Kriptografik olarak birbirine kenetli bu iki parça sayesinde sunucu, özel anahtarınızı hiç görmeden onun gerçekten sizde olduğunu doğrular. 4096-bit RSA ya da modern ED25519 bir anahtarı tahminle bulmak pratikte imkânsızdır. İşte bu yüzden üretim sunucularında her zaman anahtar kimlik doğrulama tercih edilmeli, parola girişi ise büsbütün kapatılmalıdır.

    Anahtar tabanlı giriş yalnızca daha güvenli değil, aynı zamanda daha pratiktir: bir kere kurduktan sonra her bağlantıda parola yazmanıza gerek kalmaz.

    SSH Anahtarı Oluşturma (ssh-keygen)#

    Anahtar çiftinizi kendi bilgisayarınızda üretirsiniz, sunucuda değil. Özel anahtar hiçbir zaman kişisel makinenizden çıkmamalıdır. Modern ve önerilen algoritma olan ED25519 ile bir anahtar üretmek için:

    ssh-keygen -t ed25519 -C "adiniz@bilgisayariniz"
    

    -C bayrağı yalnızca bir yorum/etiket ekler; anahtarı hangi cihazda ürettiğinizi hatırlamanıza yardımcı olur. Komut size birkaç soru sorar:

    Enter file in which to save the key (/home/kullanici/.ssh/id_ed25519):
    Enter passphrase (empty for no passphrase):
    

    Kayıt yolunu değiştirmek için özel bir nedeniniz yoksa Enter'a basıp varsayılanı kabul edin. Passphrase (parola cümlesi) kısmını ise boş bırakmayın: bu, özel anahtar dosyanızı diskte ayrıca şifreler. Böylece birisi dosyayı ele geçirse bile passphrase olmadan kullanamaz.

    Eski sistemlerle uyumluluk gerekiyorsa ED25519 yerine güçlü bir RSA anahtarı da üretebilirsiniz:

    ssh-keygen -t rsa -b 4096 -C "adiniz@bilgisayariniz"
    

    İşlem sonunda ~/.ssh/ dizininde iki dosya oluşur:

    DosyaAçıklama
    id_ed25519Özel anahtar — asla paylaşmayın, kimseye göndermeyin
    id_ed25519.pubGenel anahtar — sunucuya kopyalanacak olan güvenli parça

    Passphrase'i her seferinde yazmak istemiyorsanız ssh-agent kullanarak anahtarı oturum boyunca hafızada tutabilirsiniz:

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_ed25519
    

    Güçlü parolalar üretmek için şifre üretici aracımızdan da faydalanabilirsiniz; passphrase seçerken uzun ve tahmin edilmesi zor bir ifade kullanmak önemlidir.

    Genel Anahtarı Sunucuya Yükleme#

    Anahtar çiftiniz hazır; şimdi genel anahtarı sunucuya tanıtmanız gerekiyor. En kolay yol ssh-copy-id aracıdır:

    ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
    

    Bu komut sizi parolayla bir kez sunucuya bağlar ve genel anahtarınızı otomatik olarak ~/.ssh/authorized_keys dosyasına ekler. Bir sonraki bağlantıda parola sorulmadan, anahtarınızla giriş yapabilirsiniz:

    ssh [email protected]
    

    ssh-copy-id elinizde yoksa (örneğin Windows'ta) işlemi elle de yapabilirsiniz. Genel anahtarınızın içeriğini alıp sunucudaki ~/.ssh/authorized_keys dosyasına eklersiniz:

    # Sunucuda gerekli dizin ve dosyayı hazırlayın
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    # Genel anahtarınızın tek satırını authorized_keys dosyasına ekleyin
    echo "ssh-ed25519 AAAA... adiniz@bilgisayariniz" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    

    İzinler kritiktir. SSH, güvenlik gereği gevşek izinli dosyaları görmezden gelir. ~/.ssh dizini 700, authorized_keys dosyası ise 600 olmalıdır. İzinler yanlışsa anahtar tabanlı giriş sessizce çalışmaz ve SSH parolaya geri döner.

    Anahtarınızın çalıştığını doğrulamadan bir sonraki adıma geçmeyin. Yeni bir terminalde parola sorulmadan giriş yapabildiğinizi test edin — aksi hâlde parola girişini kapattığınızda sunucudan tamamen kilitlenebilirsiniz.

    sshd_config ile Sunucu Sertleştirme#

    Anahtar girişi çalıştığına göre, sunucuyu asıl güvenli hâle getirecek adım budur. Tüm ayarlar /etc/ssh/sshd_config dosyasında bulunur. Düzenlemeden önce bir yedek almak iyi bir alışkanlıktır:

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    sudo nano /etc/ssh/sshd_config
    

    Aşağıdaki satırları bulun (yoksa ekleyin) ve şu şekilde ayarlayın:

    # Parola ile girişi tamamen kapat — yalnızca anahtar kabul edilsin
    PasswordAuthentication no
    
    # Root kullanıcısının doğrudan girişini engelle
    PermitRootLogin no
    
    # Boş parolalı hesaplarla girişi asla kabul etme
    PermitEmptyPasswords no
    
    # Anahtar tabanlı girişi açık tut
    PubkeyAuthentication yes
    
    # Varsayılan 22 yerine farklı bir port kullan (isteğe bağlı)
    Port 2222
    

    Değişikliklerin her biri belirli bir saldırı yüzeyini kapatır:

    • PasswordAuthentication no — Brute-force parola saldırılarını tek hamlede etkisiz kılar. Bu yüzden anahtar girişinin çalıştığını önceden doğrulamak şarttır.
    • PermitRootLogin no — Saldırganların ilk hedefi neredeyse her zaman root hesabıdır. Root'u kapatıp normal bir kullanıcıyla girip sudo kullanmak katmanlı savunma sağlar.
    • Port 2222 — Portu değiştirmek gerçek bir güvenlik önlemi sayılmaz; yalnızca doğrudan 22 portunu tarayan otomatik botların büyük kısmını devre dışı bırakır. Bu daha çok "belirsizlikle güvenlik" (security through obscurity) yaklaşımıdır, ama günlüklerinizdeki gürültüyü gözle görülür biçimde azaltır.

    Ayarları kaydettikten sonra SSH servisini yeniden başlatın:

    sudo systemctl restart ssh
    

    Portu değiştirdiyseniz, sunucunun güvenlik duvarında (örneğin ufw) yeni portu açmayı ve eski portu kapatmayı unutmayın:

    sudo ufw allow 2222/tcp
    sudo ufw delete allow 22/tcp
    

    Yaptığınız değişiklikleri test etmek için mevcut oturumunuzu kapatmayın. Yeni bir terminal açıp yeni ayarlarla bağlanabildiğinizi doğrulayın:

    ssh -p 2222 [email protected]
    

    Bir sorun çıkarsa hâlâ açık olan ilk oturumunuzdan geri dönüp düzeltebilirsiniz. Bu küçük alışkanlık, kendinizi sunucudan kilitlemenin en yaygın nedenini ortadan kaldırır. Bu adımları daha geniş bir çerçevede ele alan sunucu güvenliği temelleri rehberimiz güvenlik duvarı ve kullanıcı yönetimi konularını da kapsar.

    fail2ban ile Otomatik Koruma#

    Parola girişini kapatsanız bile, sunucunuza yönelik tarama ve deneme trafiği tamamen bitmez. fail2ban, sshd günlüklerini izleyerek belirli sayıda başarısız denemeden sonra ilgili IP adresini otomatik olarak güvenlik duvarında geçici süreyle engelleyen bir araçtır. Kurulumu basittir:

    sudo apt update
    sudo apt install fail2ban -y
    sudo systemctl enable --now fail2ban
    

    Kurulumdan sonra /etc/fail2ban/jail.local dosyası ile SSH için deneme eşiğini ve engelleme süresini özelleştirebilirsiniz:

    [sshd]
    enabled = true
    port    = 2222
    maxretry = 4
    bantime = 1h
    findtime = 10m
    

    Bu yapılandırma, 10 dakika içinde 4 kez başarısız olan bir IP'yi 1 saat boyunca engeller. Engellenen adresleri şu komutla görebilirsiniz:

    sudo fail2ban-client status sshd
    

    fail2ban, anahtar tabanlı girişin üstüne eklenen tamamlayıcı bir katmandır; onun yerini tutmaz. Asıl koruma her zaman parola girişini kapatmaktan gelir.

    Sıkça Sorulan Sorular#

    SSH varsayılan olarak hangi portu kullanır?#

    SSH varsayılan olarak 22 numaralı TCP portunu kullanır. Güvenlik açısından bu portu farklı bir değere (örneğin 2222) taşımak zorunlu değildir, ancak otomatik tarama botlarının oluşturduğu günlük gürültüsünü önemli ölçüde azaltır. Port değiştirdiğinizde güvenlik duvarınızda yeni portu açmayı unutmayın.

    Özel anahtarımı kaybedersem ne olur?#

    Özel anahtarınızı kaybederseniz o anahtarla sunucuya artık giremezsiniz; bu yüzden onu güvenli biçimde yedekleyin. Sunucuya başka bir yöntemle (örneğin sağlayıcınızın konsolu ya da alternatif bir anahtar) erişebiliyorsanız, yeni bir anahtar üretip genel kısmını authorized_keys dosyasına ekleyerek erişimi geri kazanabilirsiniz. Bu risk yüzünden en az iki farklı erişim yöntemi bulundurmak akıllıcadır.

    Parola girişini kapatınca kilitlenir miyim?#

    Anahtar tabanlı girişin çalıştığını önceden doğrularsanız kilitlenmezsiniz. Altın kural şudur: PasswordAuthentication no yapmadan önce, yeni bir terminalde parola sorulmadan bağlanabildiğinizi test edin ve değişikliği uygularken mevcut oturumunuzu açık tutun. Bir sorun çıkarsa açık oturumdan geri dönebilirsiniz.

    ED25519 mi yoksa RSA anahtarı mı kullanmalıyım?#

    Yeni kurulumlarda ED25519 önerilir: RSA-4096'ya benzer güvenlik seviyesini çok daha küçük ve hızlı bir anahtarla sunar. Yalnızca çok eski bir sunucu ya da ED25519'u desteklemeyen bir istemci ile çalışmanız gerekiyorsa 4096-bit RSA'ya geçmeniz mantıklı olur. İkisi de doğru kullanıldığında pratikte kırılamaz.

    ssh-copy-id çalışmazsa ne yapmalıyım?#

    ssh-copy-id bulunamıyorsa (özellikle Windows'ta) genel anahtarınızın içeriğini elle sunucudaki ~/.ssh/authorized_keys dosyasına ekleyebilirsiniz. Bu yöntem çalışmıyorsa neredeyse her zaman sorun dosya izinlerindedir: ~/.ssh dizini 700, authorized_keys dosyası 600 olmalıdır. İzinleri düzelttikten sonra anahtar girişi çalışır.

    SSH bağlantım çok yavaş, neden?#

    Yavaş SSH bağlantısının en yaygın nedeni, sunucunun bağlanan istemcinin IP adresi için ters DNS (reverse DNS) sorgusu yapmaya çalışıp yanıt bekleyerek zaman aşımına düşmesidir. /etc/ssh/sshd_config dosyasında UseDNS no ayarını ekleyip servisi yeniden başlatmak bu gecikmeyi çoğunlukla ortadan kaldırır.

    Özetle#

    SSH, sunucu yönetiminin bel kemiğidir ve onu doğru kurmak ilk günden itibaren güvenliğinizin temelini oluşturur. Özetle sıralamak gerekirse: kendi anahtar çiftinizi ssh-keygen ile üretin, genel anahtarı ssh-copy-id ile sunucuya taşıyın, sshd_config üzerinden parola girişini ve root erişimini kapatın, isterseniz portu değiştirin ve fail2ban ile fazladan bir katman ekleyin. Bu adımların her biri bağımsız değer katar; birlikte uygulandığında ise sunucunuzu internetin gürültüsünden büyük ölçüde yalıtır.

    Yeni bir sunucuya bu yapılandırmayı sıfırdan uygulamak istiyorsanız, tam yönetici (root) erişimi veren bir VDS sunucu ya da sanal sunucu ideal bir başlangıç noktasıdır. Sunucunuzu kurduktan sonra güvenliği bir üst seviyeye taşımak için sunucu güvenliği temelleri rehberine göz atmanızı, siteleriniz için de SSL sertifikası ile trafiği uçtan uca şifrelemenizi öneririz.

    SSHGüvenlikSunucu

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.