Takip et

Linux Sunucunuza SSH ile Nasıl Erişilir: Kapsamlı Bir Rehber

Yeni bir Linux sunucusu kurdunuz ve ona uzaktan güvenli bir şekilde nasıl erişeceğinizi mi merak ediyorsunuz? İşte bu rehber tam size göre! Bu makalede, Linux sunucunuza SSH (Secure Shell) kullanarak nasıl bağlanacağınızı adım adım öğrenecek, güvenliğinizi artıracak ipuçları edinecek ve sıkça sorulan sorulara yanıt bulacaksınız.

Sunucularla uzaktan çalışmak, modern IT dünyasının temel taşlarından biridir. İster bir web sitesi barındırın, ister bir veri tabanı yönetin, isterse de bulut tabanlı uygulamalar geliştirin, Linux sunucunuza güvenli bir bağlantı kurmak kaçınılmazdır. İşte tam bu noktada SSH, yani Secure Shell (Güvenli Kabuk) devreye girer. Peki, SSH tam olarak nedir ve neden bu kadar önemlidir?

SSH, ağ üzerindeki iki bilgisayar arasında şifreli bir iletişim kanalı sağlayan bir kriptografik ağ protokolüdür. Bu protokol sayesinde, bir istemci bilgisayar (kendi bilgisayarınız) ile bir sunucu bilgisayar (Linux sunucunuz) arasında güvenli veri alışverişi yapabilirsiniz. Yani, SSH sizin sunucunuza uzaktan, sanki fiziksel olarak başında oturuyormuş gibi komutlar göndermenizi, dosyaları yönetmenizi ve sistem yapılandırmalarını değiştirmenizi sağlar. Ancak en önemlisi, bu iletişimin tamamen şifrelenmiş olmasıdır. Bu şifreleme, hassas bilgilerinizin (kullanıcı adları, şifreler, komutlar vb.) kötü niyetli kişiler tarafından ele geçirilmesini engeller.

SSH’nin temel çalışma prensibi, bir istemci-sunucu modeline dayanır. Sizin bilgisayarınız bir SSH istemcisi olarak hareket ederken, Linux sunucunuzda çalışan sshd (SSH daemon) bir SSH sunucusu görevi görür. İstemci, sunucuya bir bağlantı isteği gönderdiğinde, öncelikle bir anahtar değişimi süreci başlar. Bu süreç, iletişim için kullanılacak şifreleme anahtarlarının güvenli bir şekilde oluşturulmasını ve paylaşılmasını sağlar. Daha sonra, kullanıcı kimlik doğrulaması yapılır. Bu kimlik doğrulama genellikle bir şifre ile veya daha güvenli olan SSH anahtar çiftleri ile gerçekleşir. Kimlik doğrulama başarılı olduktan sonra, şifreli bir tünel üzerinden güvenli bir terminal oturumu başlar ve siz artık sunucunuzu yönetmeye başlayabilirsiniz.

Linux sunucu yönetiminde SSH’nin hayati önem taşımasının birkaç ana nedeni vardır. Birincisi, sağladığı güvenliktir. Tüm iletişim şifrelendiği için, ağ trafiği dinlense bile verileriniz okunamaz. Bu, özellikle herkese açık ağlar veya potansiyel güvenlik riskleri olan ortamlarda çalışırken kritik bir avantajdır. İkincisi, esnekliğidir. SSH sadece terminal erişimi sağlamakla kalmaz, aynı zamanda dosya transferi (SCP ve SFTP ile), port yönlendirme ve hatta X11 oturumları için de kullanılabilir. Bu çok yönlülük, sistem yöneticilerine ve geliştiricilere geniş bir kullanım alanı sunar. Üçüncüsü, otomasyon yeteneğidir. SSH anahtarları sayesinde, parola girmeden otomatik komut dosyaları ve dağıtımlar çalıştırılabilir, bu da büyük ölçekli altyapıların yönetimini kolaylaştırır.

Sonuç olarak, yeni bir Linux sunucusuyla çalışmaya başladığınızda, SSH’yi anlamak ve doğru bir şekilde kullanmak, sadece sunucunuza erişiminizi sağlamakla kalmaz, aynı zamanda operasyonlarınızın güvenliğini ve verimliliğini de önemli ölçüde artırır. Bu nedenle, bu protokolü doğru bir şekilde öğrenmek, dijital dünyadaki varlığınızı güvence altına almanın ilk adımlarından biridir.

Windows, macOS ve Linux’tan SSH Bağlantısı Nasıl Kurulur?

Linux sunucunuza SSH ile bağlanmak, kullandığınız işletim sistemine göre küçük farklılıklar gösterir. Ancak temel prensip her zaman aynıdır: bir SSH istemcisi kullanarak sunucuya bağlanmak. Aşağıda, en yaygın işletim sistemleri olan Windows, macOS ve Linux’tan nasıl bağlantı kuracağınızı adım adım bulabilirsiniz.

Windows Kullanıcıları İçin PuTTY ile SSH Erişimi

Windows kullanıcıları için SSH bağlantısı kurmanın en popüler ve köklü yollarından biri PuTTY adında ücretsiz bir SSH istemcisi kullanmaktır. PuTTY, kullanımı kolay bir grafik arayüze sahiptir ve çoğu Windows sürümünde sorunsuz çalışır. Modern Windows 10 ve 11 sürümlerinde yerleşik SSH istemcisi de bulunmaktadır, ancak PuTTY hâlâ yaygın olarak tercih edilmektedir.

  1. PuTTY’yi İndirin ve Kurun: İlk adım, PuTTY’yi resmi web sitesinden (www.putty.org) indirip kurmaktır. Genellikle .msi uzantılı yükleyici dosyasını indirip standart kurulum adımlarını takip edebilirsiniz.
  2. PuTTY’yi Başlatın: Kurulum tamamlandıktan sonra, Başlat menüsünden PuTTY’yi başlatın.
  3. Bağlantı Bilgilerini Girin: PuTTY penceresinde “Session” (Oturum) kategorisi altında aşağıdaki bilgileri girmeniz gerekecektir:
    • Host Name (or IP address): Linux sunucunuzun IP adresini veya alan adını (örneğin, 192.168.1.100 veya ornek.com) buraya yazın.
    • Port: Varsayılan SSH portu 22‘dir. Eğer sunucunuzda farklı bir port kullanılıyorsa, bu değeri güncelleyin.
    • Connection type: SSH seçeneğinin işaretli olduğundan emin olun.
  4. Oturumu Kaydedin (İsteğe Bağlı): Gelecekte kolayca bağlanmak için, “Saved Sessions” (Kaydedilmiş Oturumlar) alanına bir isim (örneğin, “My Linux Server”) yazıp “Save” (Kaydet) düğmesine tıklayabilirsiniz. Bu sayede bir sonraki seferde sadece bu ismi seçip “Load” (Yükle) diyerek bilgileri otomatik doldurabilirsiniz.
  5. Bağlantı Kurun: “Open” (Aç) düğmesine tıklayarak bağlantıyı başlatın. Bir güvenlik uyarısı ile karşılaşabilirsiniz (sunucunun anahtar parmak izi hakkında). Bu uyarıyı doğrulayıp “Accept” (Kabul Et) veya “Yes” (Evet) seçeneğini işaretleyerek devam edin. Bu, sunucunun kimliğini doğrulamak için önemlidir ve ilk bağlantıda normaldir.
  6. Kimlik Doğrulama: PuTTY terminal penceresinde sizden sunucunuzun kullanıcı adı ve şifresi istenecektir.
    login as: your_username
    your_username@your_server's_ip_address's password:


    Kullanıcı adınızı (genellikle root veya sunucu sağlayıcınızın verdiği kullanıcı adı) girin ve Enter tuşuna basın. Ardından şifrenizi girin. Şifrenizi yazarken karakterler ekranda görünmeyecektir, bu normaldir. Şifreyi doğru girdikten sonra Enter'a basın. Başarılı bir bağlantı sonrası sunucunuzun komut istemcisini göreceksiniz.

macOS ve Linux Kullanıcıları İçin Terminal Üzerinden SSH

macOS ve Linux işletim sistemleri, SSH istemcisini yerleşik olarak içerir. Bu sayede ek bir yazılım kurmanıza gerek kalmaz; tek yapmanız gereken bir terminal penceresi açıp doğru komutu girmektir.

  1. Terminali Açın:
    • macOS: "Uygulamalar" > "İzlenceler" > "Terminal" veya Spotlight araması (Command + Boşluk) ile "Terminal" yazarak açın.
    • Linux: Genellikle Ctrl + Alt + T tuş kombinasyonu ile veya uygulama menüsünden "Terminal" aratarak açabilirsiniz.
  2. SSH Komutunu Girin: Terminal penceresinde aşağıdaki komut formatını kullanarak sunucunuza bağlanın:
    ssh [kullanıcı_adı]@[sunucu_adresi_veya_alan_adı]


    Örneğin, kullanıcı adınız admin ve sunucunuzun IP adresi 192.168.1.100 ise:

    ssh admin@192.168.1.100


    Eğer sunucunuz varsayılan 22 portu yerine farklı bir port kullanıyorsa, -p parametresini kullanmanız gerekir:

    ssh -p [port_numarası] [kullanıcı_adı]@[sunucu_adresi_veya_alan_adı]


    Örneğin, port 2222 ise:

    ssh -p 2222 admin@192.168.1.100

  3. Güvenlik Uyarısını Onaylayın (İlk Bağlantıda): İlk kez bağlandığınızda, sunucunun anahtar parmak izi hakkında bir uyarı alacaksınız:
    The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
    ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?


    Bu, sunucunun kimliğini doğrulamanızı ister. Doğruladıktan sonra yes yazıp Enter tuşuna basın. Bu işlem, sunucunun anahtarını sizin ~/.ssh/known_hosts dosyanıza kaydeder ve bir sonraki bağlantılarınızda bu uyarıyı tekrar görmezsiniz (sunucu anahtarı değişmediği sürece).

  4. Şifrenizi Girin: Ardından sizden kullanıcı adınızın şifresi istenecektir:
    admin@192.168.1.100's password:


    Şifrenizi yazın (karakterler ekranda görünmez) ve Enter tuşuna basın. Doğru şifreyi girdikten sonra Linux sunucunuzun komut istemcisine bağlanmış olacaksınız.

Bu adımlarla, hangi işletim sistemini kullanırsanız kullanın, yeni Linux sunucunuza güvenli bir SSH bağlantısı kurabilir ve yönetimini uzaktan gerçekleştirebilirsiniz. Unutmayın, güvenlik için her zaman karmaşık ve benzersiz şifreler kullanmanız önemlidir.

Daha Güvenli Bağlantı İçin SSH Anahtar Çiftleri Nasıl Oluşturulur ve Kullanılır?

Şifre tabanlı SSH bağlantısı pratik olsa da, brute-force saldırılarına karşı savunmasız kalabilir. Bu nedenle, SSH bağlantılarınızı çok daha güvenli hale getirmek için SSH anahtar çiftleri (public/private key pair) kullanmanız şiddetle tavsiye edilir. Anahtar çiftleri, bir açık anahtar (public key) ve bir özel anahtar (private key) olmak üzere iki bileşenden oluşur. Açık anahtar sunucunuzda saklanırken, özel anahtarınız kendi bilgisayarınızda gizli ve güvende tutulur.

Bu sistemde, özel anahtarınızla bir bağlantı isteği başlattığınızda, sunucu açık anahtarla bu isteği doğrular. Eğer iki anahtar eşleşiyorsa ve özel anahtarınızın parolası (passphrase) doğruysa (eğer belirlediyseniz), bağlantı izni verilir. Bu yöntem, şifrelerinizi ağ üzerinden gönderme ihtiyacını ortadan kaldırdığı için çok daha güvenlidir.

SSH Anahtar Çifti Oluşturma (macOS, Linux ve Windows PowerShell/WSL)

Anahtar çifti oluşturma işlemi çoğu sistemde aynıdır ve ssh-keygen komutu ile yapılır:

  1. Terminal veya PowerShell'i Açın: macOS ve Linux'ta terminali, Windows'ta ise PowerShell'i (veya WSL'yi) açın.
  2. Anahtar Çifti Oluşturma Komutunu Çalıştırın:
    ssh-keygen -t rsa -b 4096 -C "sizin_email_adresiniz@ornek.com"

    • -t rsa: RSA algoritmasını kullanarak anahtar oluşturulacağını belirtir (alternatif olarak ed25519 de kullanabilirsiniz, daha modern ve hızlıdır).
    • -b 4096: Anahtarın bit uzunluğunu belirler (4096 bit, günümüz için oldukça güvenli bir boyuttur).
    • -C "sizin_email_adresiniz@ornek.com": Anahtara eklemek istediğiniz bir yorumdur. Genellikle kendi e-posta adresinizi kullanmak, farklı anahtarları ayırt etmenizi kolaylaştırır.
  3. Anahtarın Kaydedileceği Yeri Belirleyin: Komutu çalıştırdıktan sonra size anahtarın nereye kaydedileceği sorulur. Varsayılan konum ~/.ssh/id_rsa'dır ve genellikle Enter tuşuna basarak bu varsayılanı kabul etmeniz önerilir.
  4. Parola (Passphrase) Belirleyin: Daha sonra sizden bir parola (passphrase) girmeniz istenecektir. Bu parola, özel anahtarınızı ekstra bir güvenlik katmanıyla korur. Güçlü bir parola belirlemek iyi bir uygulamadır, ancak her bağlantıda girmeniz gerekeceği için pratikliği düşünebilirsiniz. Güvenliğiniz için şiddetle tavsiye edilir. İki kez girip onaylayın. Eğer boş bırakırsanız, anahtarınızın parolası olmaz ve bağlantı kurarken şifre istemez.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again:


    Bu adımları tamamladığınızda, ~/.ssh/id_rsa (özel anahtarınız) ve ~/.ssh/id_rsa.pub (açık anahtarınız) dosyaları oluşturulmuş olacaktır. Özel anahtarınızı kimseyle paylaşmayın!

Açık Anahtarı Linux Sunucusuna Kopyalama

Anahtar çiftinizi oluşturduktan sonra, açık anahtarınızı (id_rsa.pub veya id_ed25519.pub) Linux sunucunuza kopyalamanız gerekir. Bunun en kolay ve önerilen yolu ssh-copy-id komutunu kullanmaktır.

  1. Açık Anahtarı Kopyalayın: Kendi bilgisayarınızın terminalinden aşağıdaki komutu çalıştırın:
    ssh-copy-id [kullanıcı_adı]@[sunucu_adresi_veya_alan_adı]

    Örneğin:

    ssh-copy-id admin@192.168.1.100
    Bu komut sizden ilk olarak sunucunun şifresini isteyecektir (eğer daha önce anahtar tabanlı bağlantı kurmadıysanız). Şifreyi girdikten sonra, ssh-copy-id otomatik olarak açık anahtarınızı sunucudaki ~/.ssh/authorized_keys dosyasına ekleyecektir.

  2. Manuel Kopyalama (Eğer ssh-copy-id Yoksa veya Çalışmazsa): Eğer ssh-copy-id kullanılamıyorsa, açık anahtarınızı manuel olarak kopyalayabilirsiniz.
    • Önce açık anahtarınızın içeriğini görüntüleyin:
      cat ~/.ssh/id_rsa.pub


      Bu çıktıyı kopyalayın.

    • Daha sonra şifre tabanlı SSH ile sunucunuza bağlanın:
      ssh admin@192.168.1.100

    • Sunucuda, .ssh dizinini oluşturun (eğer yoksa) ve izinlerini ayarlayın:
      mkdir -p ~/.ssh
      chmod 700 ~/.ssh

    • Açık anahtarı authorized_keys dosyasına ekleyin. Eğer dosya yoksa oluşturulur:
      echo "Daha_önce_kopyaladığınız_açık_anahtar_içeriği" >> ~/.ssh/authorized_keys

      Veya bir metin düzenleyici ile açıp yapıştırın:

      nano ~/.ssh/authorized_keys
      Yapıştırdıktan sonra dosyayı kaydedip kapatın.

    • authorized_keys dosyasının izinlerini ayarlayın:
      chmod 600 ~/.ssh/authorized_keys

Anahtar Çifti ile SSH Bağlantısı Kurma

Açık anahtarınız sunucuda kopyalandıktan sonra, artık anahtar tabanlı kimlik doğrulamasını kullanarak bağlanabilirsiniz. Tekrar aynı SSH komutunu kullanın:

ssh admin@192.168.1.100

Eğer özel anahtarınıza bir parola belirlemişseniz, sizden bu parola istenecektir. Doğru parolayı girdikten sonra sunucuya başarıyla bağlanmış olacaksınız. Artık şifre girmek zorunda kalmadan çok daha güvenli bir şekilde sunucunuza erişebilirsiniz.

Gelişmiş SSH Kullanımı: Yapılandırma Dosyaları ve Port Yönlendirme İpuçları

SSH, temel bağlantı kurma yeteneklerinin ötesinde, sistem yöneticileri ve geliştiriciler için hayatı kolaylaştıran birçok gelişmiş özelliğe sahiptir. Bu bölümde, SSH yapılandırma dosyasının nasıl kullanılacağını ve port yönlendirme gibi güçlü özelliklerin günlük iş akışınızı nasıl iyileştirebileceğini inceleyeceğiz.

SSH Yapılandırma Dosyası (~/.ssh/config) ile Bağlantıları Yönetme

Sürekli olarak aynı sunuculara farklı kullanıcı adları, portlar veya özel anahtarlarla bağlanıyorsanız, her seferinde uzun komutlar yazmak sıkıcı olabilir. SSH yapılandırma dosyası (~/.ssh/config), bu süreci otomatikleştirmek ve basitleştirmek için harika bir yoldur. Bu dosya, her bir sunucu için bağlantı ayrıntılarını önceden tanımlamanıza olanak tanır.

  1. Yapılandırma Dosyasını Oluşturun: Kendi bilgisayarınızda (istemci tarafında), ~/.ssh/config adında bir dosya oluşturun (eğer yoksa).
    touch ~/.ssh/config
    chmod 600 ~/.ssh/config


    chmod 600 komutu, dosyanın yalnızca sizin tarafınızdan okunup yazılabilir olmasını sağlar, bu da güvenlik için kritik öneme sahiptir.

  2. Sunucu Bilgilerini Ekleyin: Bir metin düzenleyici (nano, vim, VS Code vb.) kullanarak dosyayı açın ve her bir sunucu için aşağıdaki gibi girdiler ekleyin:
    Host webserver
        HostName 192.168.1.100
        User admin
        Port 2222
        IdentityFile ~/.ssh/id_rsa_webserver
        ForwardAgent yes
    
    Host dbserver
        HostName db.example.com
        User postgresadmin
        Port 22
        IdentityFile ~/.ssh/id_ed25519
        StrictHostKeyChecking no # Sadece test amaçlı, üretimde önerilmez
    
    Host *
        ServerAliveInterval 60
        ServerAliveCountMax 3


    Yukarıdaki örnekte:

    • Host webserver: Bu, bağlantı kurarken kullanacağınız kısa isimdir (örneğin, ssh webserver).
    • HostName: Sunucunun gerçek IP adresi veya alan adı.
    • User: Sunucuya bağlanmak için kullanılacak kullanıcı adı.
    • Port: Sunucunun SSH dinleme portu (varsayılan 22).
    • IdentityFile: Bu sunucuya bağlanırken kullanılacak özel anahtar dosyasının yolu.
    • ForwardAgent yes: SSH Agent Forwarding'i etkinleştirir (bir sonraki alt başlıkta açıklanmıştır).
    • StrictHostKeyChecking no: İlk bağlantıda parmak izi doğrulamasını atlar (güvenlik riski taşıyabilir, dikkatli kullanılmalı).
    • Host *: Tüm sunucular için geçerli olacak genel ayarları tanımlar.
    • ServerAliveInterval ve ServerAliveCountMax: Bağlantının boşta kalma süresi sonunda kopmasını engellemek için kullanılır.
  3. Kullanım: Artık, ssh webserver gibi kısa ve kolay komutlarla sunucularınıza bağlanabilirsiniz. SSH istemcisi, ~/.ssh/config dosyanızdaki tanımları otomatik olarak okuyacak ve ilgili parametreleri uygulayacaktır.

SSH Agent Forwarding ve Kolaylıkları

Eğer bir sunucuya bağlanıp oradan başka bir sunucuya (örneğin, bir üretim sunucusundan bir test sunucusuna) geçiş yapmanız gerekiyorsa ve her seferinde anahtar parolası girmek istemiyorsanız, SSH Agent Forwarding imdadınıza yetişir. Bu özellik, yerel bilgisayarınızdaki SSH agent'ta yüklü olan özel anahtarlarınızı, bağlandığınız uzak sunucuya güvenli bir şekilde "iletmenizi" sağlar.

  1. SSH Agent'ı Başlatın ve Anahtarınızı Ekleyin:
    eval "$(ssh-agent -s)" # SSH Agent'ı başlatır
    ssh-add ~/.ssh/id_rsa # Özel anahtarınızı agent'a ekler (parola istenebilir)


    Bu adımı, bilgisayarınız her yeniden başlatıldığında veya agent oturumu sona erdiğinde tekrarlamanız gerekebilir.

  2. ~/.ssh/config Dosyasında Etkinleştirin: Yapılandırma dosyanızda ilgili sunucu için ForwardAgent yes satırını ekleyin (yukarıdaki örneğe bakabilirsiniz).
  3. Kullanım: Artık yerel makinenizden ilk sunucuya SSH ile bağlandığınızda, özel anahtarınızın "kimliği" ilk sunucuya yönlendirilir. Buradan, yapılandırma dosyanızda tanımlanmış veya manuel olarak anahtar tabanlı kimlik doğrulaması gereken başka bir sunucuya bağlanırken tekrar parola girmenize gerek kalmaz. Bu, özellikle CI/CD boru hatlarında veya çoklu sunucu ortamlarında büyük kolaylık sağlar.

Port Yönlendirme (Port Forwarding): Güvenli Tüneller Oluşturma

SSH port yönlendirme (veya SSH tünelleme), güvensiz bir ağ hizmetine güvenli bir SSH bağlantısı üzerinden erişmenizi sağlayan güçlü bir özelliktir. Üç ana türü vardır: yerel, uzak ve dinamik.

  1. Yerel Port Yönlendirme (Local Port Forwarding):

    Uzak bir sunucudaki bir hizmete, sanki kendi bilgisayarınızda çalışıyormuş gibi erişmenizi sağlar. Genellikle uzak bir veritabanı veya iç ağ hizmetine güvenli erişim için kullanılır.

    ssh -L [yerel_port]:[uzak_host]:[uzak_port] [kullanıcı_adı]@[ssh_sunucu_adresi]


    Örnek: Uzak sunucunuzdaki PostgreSQL veritabanına (127.0.0.1:5432) kendi bilgisayarınızın 9000 portundan erişmek için:

    ssh -L 9000:127.0.0.1:5432 admin@192.168.1.100


    Bu komutu çalıştırdıktan sonra, kendi bilgisayarınızda localhost:9000 adresine bağlandığınızda aslında uzak sunucudaki PostgreSQL veritabanına bağlanmış olacaksınız.

  2. Uzak Port Yönlendirme (Remote Port Forwarding):

    Kendi bilgisayarınızdaki bir hizmeti, uzak sunucu üzerinden erişilebilir kılar. Genellikle bir web kancasını (webhook) test etmek veya şirket içi bir sunucuya dışarıdan erişmek için kullanılır.

    ssh -R [uzak_port]:[yerel_host]:[yerel_port] [kullanıcı_adı]@[ssh_sunucu_adresi]


    Örnek: Kendi bilgisayarınızdaki 8000 portunda çalışan bir web uygulamasını, uzak sunucunun 8080 portu üzerinden erişilebilir kılmak için:

    ssh -R 8080:localhost:8000 admin@192.168.1.100


    Artık uzak sunucudan (veya dışarıdan, eğer uzak sunucu bu portu herkese açmışsa) uzak_sunucu_adresi:8080 adresine bağlandığınızda, aslında kendi bilgisayarınızdaki localhost:8000 uygulamasına erişmiş olacaksınız.

SSH'nin bu gelişmiş özellikleri, günlük sunucu yönetim görevlerini çok daha verimli, güvenli ve esnek hale getirir. Bu araçları etkin bir şekilde kullanarak, Linux sunucularınızla olan etkileşimlerinizi bir sonraki seviyeye taşıyabilirsiniz.

Linux Sunucunuzun SSH Güvenliğini Artırmak İçin Neler Yapmalısınız?

SSH, zaten şifreli bir protokol olmasına rağmen, bazı ek güvenlik önlemleri alarak Linux sunucunuzun güvenliğini daha da artırabilirsiniz. Bu önlemler, yetkisiz erişimi engellemeye ve olası saldırı yüzeylerini azaltmaya yardımcı olur.

  1. Varsayılan SSH Portunu Değiştirin: SSH varsayılan olarak 22 numaralı portu kullanır. Botlar ve kötü niyetli kişiler genellikle bu portu hedefleyerek brute-force saldırıları denerler. Portu 1024-65535 aralığında, henüz kullanılmayan farklı bir porta değiştirmek, bu otomatik taramaların hedefinden çıkmanızı sağlar.
    • Sunucunuza SSH ile bağlanın.
    • sshd_config dosyasını bir metin düzenleyici ile açın:
      sudo nano /etc/ssh/sshd_config

    • #Port 22 satırını bulun, başındaki # işaretini kaldırın ve 22 yerine istediğiniz yeni port numarasını (örneğin 2222) yazın:
      Port 2222

    • Dosyayı kaydedip kapatın.
    • SSH servisini yeniden başlatın:
      sudo systemctl restart sshd


      Eğer sunucunuzda bir güvenlik duvarı (UFW, firewalld vb.) çalışıyorsa, yeni port numarasını güvenlik duvarından açmayı unutmayın! Aksi takdirde bağlantı kuramazsınız.

  2. Şifre Tabanlı Kimlik Doğrulamayı Devre Dışı Bırakın: SSH anahtar çiftleri, şifrelerden çok daha güvenlidir. Anahtar tabanlı bağlantı kurmayı başardıktan sonra, şifre tabanlı kimlik doğrulamasını devre dışı bırakmak, brute-force saldırılarına karşı en güçlü savunmalardan biridir.
    • sshd_config dosyasını tekrar açın:
      sudo nano /etc/ssh/sshd_config

    • PasswordAuthentication yes satırını bulup no olarak değiştirin:
      PasswordAuthentication no

    • Dosyayı kaydedip kapatın ve SSH servisini yeniden başlatın.
    • UYARI: Bu değişikliği yapmadan önce anahtar tabanlı bağlantınızın sorunsuz çalıştığından %100 emin olun. Aksi takdirde sunucunuza bir daha erişemeyebilirsiniz!
  3. Root Girişini Kısıtlayın: root kullanıcısı, Linux sistemindeki en yetkili hesaptır ve genellikle saldırıların ilk hedefidir. root kullanıcısının doğrudan SSH ile giriş yapmasını engellemek, sisteminizin güvenliğini artırır. Bunun yerine, normal bir kullanıcıyla bağlanıp gerektiğinde sudo komutunu kullanarak yükseltilmiş ayrıcalıklar elde edebilirsiniz.
    • sshd_config dosyasında PermitRootLogin satırını bulup no olarak ayarlayın:
      PermitRootLogin no

    • Değişikliği kaydedin ve SSH servisini yeniden başlatın.
  4. Fail2Ban Kurun: Fail2Ban, sunucu günlük dosyalarını izleyerek başarısız giriş denemelerini tespit eden ve belirli bir sayıda başarısız denemeden sonra kaynak IP adreslerini geçici veya kalıcı olarak engelleyen bir intrusion prevention sistemidir.
    • Kurulum (Debian/Ubuntu):
      sudo apt update
      sudo apt install fail2ban

    • Kurulum (CentOS/RHEL):
      sudo yum install epel-release
      sudo yum install fail2ban

    • Kurulumdan sonra varsayılan ayarlarla çalışmaya başlar. Ayarlarını /etc/fail2ban/jail.local dosyasını oluşturarak özelleştirebilirsiniz.
  5. SSH Servisini Sürekli Güncel Tutun: Yazılım güncellemeleri genellikle güvenlik açıklarını kapatır. SSH servisi ve işletim sisteminizin düzenli olarak güncel olduğundan emin olun.
  6. Sadece İhtiyaç Duyulan IP Adreslerinden Erişime İzin Verin: Eğer sunucunuza belirli bir IP adresinden veya bir IP aralığından bağlanıyorsanız, güvenlik duvarınızı bu IP'lerle sınırlayabilirsiniz. Bu, bilinmeyen kaynaklardan gelen bağlantı denemelerini baştan engeller.

Bu güvenlik önlemlerini uygulayarak, Linux sunucunuzu çok daha sağlam bir kale haline getirecek ve yetkisiz erişim riskini önemli ölçüde azaltacaksınız. Unutmayın, güvenlik sürekli bir süreçtir ve düzenli denetimler ve güncellemeler gerektirir.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu kapsamlı rehberde, yeni Linux sunucunuza SSH ile nasıl güvenli bir şekilde erişeceğinizi adım adım öğrendiniz. SSH'nin temel prensiplerinden başlayarak, farklı işletim sistemlerinden bağlantı kurma yöntemlerini, şifre tabanlı ve anahtar tabanlı kimlik doğrulama arasındaki farkları ve neden anahtar tabanlı yaklaşımın daha güvenli olduğunu inceledik. Ayrıca, SSH yapılandırma dosyaları ve port yönlendirme gibi gelişmiş özelliklerin yanı sıra, sunucunuzun SSH güvenliğini artırmak için almanız gereken kritik önlemleri de ele aldık. Güvenliğinizi sağlamak adına port değişikliği, şifre tabanlı erişimi kapatma ve Fail2Ban kullanımı gibi adımların önemini vurguladık. Bu bilgilerle donanmış olarak, Linux sunucularınızı etkili ve güvenli bir şekilde yönetmeye hazırsınız.

Sıkça Sorulan Sorular (SSS)

  1. SSH bağlantım neden başarısız oluyor?

    Bağlantı başarısızlıklarının birkaç nedeni olabilir: yanlış IP adresi veya alan adı, yanlış kullanıcı adı, yanlış şifre veya özel anahtar, güvenlik duvarı (hem istemci hem de sunucu tarafında) tarafından engellenen port, SSH servisi sunucuda çalışmıyor veya yanlış port üzerinden dinliyor olabilir. Tüm bu parametreleri dikkatlice kontrol etmeniz gerekir.

  2. Permission denied (publickey) hatası ne anlama geliyor?

    Bu hata, SSH sunucusunun sizin sağladığınız özel anahtar ile kimliğinizi doğrulayamadığı anlamına gelir. Genellikle aşağıdaki durumlarda ortaya çıkar: sunucuda açık anahtarınız eksik veya yanlış; özel anahtarınızın izinleri yanlış (genellikle chmod 600 ~/.ssh/id_rsa olmalı); özel anahtarınızın parolası yanlış girildi veya SSH Agent'a eklenmedi.

  3. SSH portunu değiştirdim ancak artık bağlanamıyorum, ne yapmalıyım?

    Büyük ihtimalle sunucunuzdaki güvenlik duvarı (UFW, firewalld vb.) yeni SSH portuna izin vermiyor. Sunucuya erişmek için sağlayıcınızın yönetim paneli üzerinden (konsol veya kurtarma modu) bağlanıp güvenlik duvarı ayarlarınızı kontrol etmeli ve yeni portu açmalısınız. Ardından SSH servisini yeniden başlatmayı deneyin.

  4. SSH anahtarımın parolasını unuttum, ne yapmalıyım?

    Eğer özel anahtarınızın parolasını unuttuysanız, ne yazık ki bu anahtarı kullanarak bağlantı kuramazsınız. Bu durumda, yeni bir SSH anahtar çifti oluşturmanız, açık anahtarınızı sunucuya tekrar kopyalamanız ve eski anahtarı sunucudaki authorized_keys dosyasından kaldırmanız gerekir. Eğer sunucuya şifre tabanlı veya başka bir yolla erişemiyorsanız, sunucu sağlayıcınızdan yardım almanız gerekebilir.

  5. SSH bağlantısı sürekli kopuyor, ne yapabilirim?

    Bağlantı kopmaları genellikle ağ sorunlarından veya SSH oturumunun boşta kalma (idle timeout) süresi dolmasından kaynaklanır. Kendi bilgisayarınızdaki ~/.ssh/config dosyasına aşağıdaki satırları ekleyerek bağlantının daha uzun süre açık kalmasını sağlayabilirsiniz:

    Host *
        ServerAliveInterval 60
        ServerAliveCountMax 3


    Bu ayarlar, SSH istemcisinin her 60 saniyede bir sunucuya "canlı" sinyali göndermesini ve 3 ardışık sinyal yanıtı alamazsa bağlantıyı kesmesini sağlar. Bu, genellikle boşta kalma nedeniyle kopmaları engeller.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version