Skip to content
Back to blog
Rehber SSH Linux Sistem Yönetimi Bağlantı Sorunları Güvenlik Hata Ayıklama Troubleshooting Mistral

SSH Bağlantı Sorunları: Sık Karşılaşılan Hatalar ve Pratik Çözüm Yolları

SSH bağlantı sorunlarına yönelik kapsamlı bir rehber. Sık karşılaşılan hataların nedenleri, hata mesajlarının yorumlanması ve adım adım çözüm yöntemleri. Sistem yöneticilerinin ve geliştiricilerin işini kolaylaştıracak pratik ipuçları.

Caner Serbest

Sistem ve Altyapı

6 min read

SSH Bağlantı Sorunları: Sık Karşılaşılan Hatalar ve Pratik Çözüm Yolları

SSH (Secure Shell), uzak sunuculara güvenli bir şekilde erişim sağlamak için kullanılan temel bir protokoldür. Ancak, zaman zaman bağlantı sorunlarıyla karşılaşabilirsiniz. Bu sorunlar, basit yapılandırma hatalarından karmaşık ağ problemlerine kadar çeşitli nedenlerden kaynaklanabilir. Bu rehberde, en sık karşılaşılan SSH bağlantı sorunlarını, hata mesajlarını nasıl yorumlayacağınızı ve bu sorunları nasıl çözeceğinizi adım adım ele alacağız.


🔍 SSH Bağlantı Sorunlarının Temel Nedenleri

SSH bağlantı sorunlarının arkasında yatan temel nedenleri anlamak, sorunu hızlıca tespit etmenize yardımcı olacaktır. İşte en yaygın nedenler:

  1. Ağ Bağlantısı Sorunları

    • Sunucunun internete bağlı olmaması
    • Yerel ağdaki IP değişiklikleri
    • Güvenlik duvarı (firewall) engellemeleri
    • DNS çözümleme hataları
  2. SSH Servisinin Çalışmaması

    • SSH servisinin durmuş olması
    • Yanlış yapılandırma dosyaları
    • Port değişiklikleri
  3. Kimlik Doğrulama Problemleri

    • Geçersiz kullanıcı adı/şifre
    • SSH anahtarlarının yanlış yapılandırılması
    • Yetki (permission) sorunları
  4. Sistem Kaynakları

    • Sunucunun aşırı yüklenmesi
    • Bellek ya da CPU kaynaklarının tükenmesi
  5. Güvenlik Politikaları

    • Fail2Ban gibi araçların IP’yi geçici olarak engellemesi
    • /etc/hosts.deny ya da /etc/hosts.allow dosyalarındaki kısıtlamalar

🚨 En Sık Karşılaşılan SSH Hata Mesajları ve Çözümleri

1. Connection refused Hatası

Hata Mesajı:

ssh: connect to host 192.168.1.100 port 22: Connection refused

Nedenleri ve Çözümleri:

  • SSH servisinin çalışmadığını doğrulayın:

    sudo systemctl status ssh

    Eğer servis çalışmıyorsa:

    sudo systemctl start ssh
    sudo systemctl enable ssh  # Sistem başlangıcında otomatik başlat
  • SSH portunun doğru olduğunu kontrol edin:

    sudo ss -tulnp | grep ssh

    Varsayılan port 22’dir. Farklı bir port kullanıyorsanız, bağlantı sırasında belirtin:

    ssh -p 2222 kullanici@sunucu_ip
  • Güvenlik duvarını kontrol edin:

    sudo ufw status  # UFW kullanıyorsanız
    sudo iptables -L  # iptables kullanıyorsanız

    SSH portunu (varsayılan 22) açın:

    sudo ufw allow 22/tcp

2. Permission denied (publickey) Hatası

Hata Mesajı:

Permission denied (publickey).

Nedenleri ve Çözümleri:

  • SSH anahtarlarının doğru yapılandırıldığını kontrol edin:

    ls -la ~/.ssh/

    id_rsa (özel anahtar) ve id_rsa.pub (genel anahtar) dosyalarının olması gerekir.

  • Genel anahtarın sunucuya eklenmiş olduğunu doğrulayın:

    cat ~/.ssh/id_rsa.pub

    Bu çıktıyı sunucudaki ~/.ssh/authorized_keys dosyasına ekleyin:

    mkdir -p ~/.ssh
    echo "PASTE_PUBLIC_KEY_HERE" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
  • SSH servisinin anahtar tabanlı kimlik doğrulamasına izin verdiğinden emin olun:

    sudo nano /etc/ssh/sshd_config

    Aşağıdaki satırların doğru olduğundan emin olun:

    PubkeyAuthentication yes
    PasswordAuthentication no  # Anahtar tabanlı doğrulama kullanıyorsanız

    Değişikliklerden sonra SSH servisini yeniden başlatın:

    sudo systemctl restart ssh

3. Host key verification failed Hatası

Hata Mesajı:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@n
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Nedenleri ve Çözümleri:

  • Sunucunun IP’si ya da anahtarları değişmiş olabilir:

    • Sunucu yeniden yüklenmiş olabilir.
    • SSH anahtarları yeniden oluşturulmuş olabilir.
  • Çözüm:

    ssh-keygen -R sunucu_ip  # Eski anahtarı önbellekten sil
    ssh kullanici@sunucu_ip  # Yeniden bağlanmayı deneyin

4. Connection timed out Hatası

Hata Mesajı:

ssh: connect to host 192.168.1.100 port 22: Connection timed out

Nedenleri ve Çözümleri:

  • Ağ bağlantısı sorunları:

    • Sunucunun internete bağlı olmadığını kontrol edin:
      ping sunucu_ip
    • Yerel ağdaki IP değişikliklerini kontrol edin:
      ip a
  • Güvenlik duvarı engellemesi:

    • Yerel güvenlik duvarınızı (örn. Windows Defender, macOS Firewall) kontrol edin.
    • Sunucu tarafındaki güvenlik duvarını inceleyin:
      sudo iptables -L -n -v
  • Port yönlendirme (port forwarding) sorunları:

    • Eğer sunucu NAT arkasında ise, doğru port yönlendirmesini yaptığınızdan emin olun.

5. No route to host Hatası

Hata Mesajı:

ssh: connect to host 192.168.1.100 port 22: No route to host

Nedenleri ve Çözümleri:

  • Ağ yapılandırmasında sorun:

    • Yerel ağdaki diğer cihazlarla iletişim kurabiliyor musunuz?
      ping 8.8.8.8
    • Sunucunun IP’sinin doğru olduğunu ve ağda bulunduğunu doğrulayın:
      arp -a | grep sunucu_ip
  • Varsayılan ağ geçidinin (gateway) doğru olduğunu kontrol edin:

    ip route show

🔧 SSH Bağlantı Sorunlarını Gidermek için Adım Adım Kontrol Listesi

Aşağıdaki adımları izleyerek SSH bağlantı sorunlarını sistematik bir şekilde çözebilirsiniz:

  1. SSH servisinin çalıştığını doğrulayın:

    sudo systemctl status ssh
  2. SSH portunun açık olduğunu kontrol edin:

    sudo ss -tulnp | grep ssh
  3. Güvenlik duvarını inceleyin:

    sudo ufw status  # UFW kullanıyorsanız
    sudo iptables -L  # iptables kullanıyorsanız
  4. Ağ bağlantısını test edin:

    ping sunucu_ip
    traceroute sunucu_ip
  5. SSH yapılandırma dosyasını inceleyin:

    sudo nano /etc/ssh/sshd_config
    • Port 22 (varsayılan port)
    • PermitRootLogin no (güvenlik için)
    • PasswordAuthentication no (anahtar tabanlı doğrulama için)
  6. SSH anahtarlarını kontrol edin:

    ls -la ~/.ssh/
    ssh-keygen -l -f ~/.ssh/id_rsa.pub  # Anahtar uzunluğunu kontrol edin
  7. Sunucu tarafındaki logları inceleyin:

    sudo tail -f /var/log/auth.log  # Debian/Ubuntu
    sudo tail -f /var/log/secure     # RHEL/CentOS
  8. Bağlantıyı debug modunda test edin:

    ssh -vvv kullanici@sunucu_ip

    Bu komut, bağlantı sürecindeki her adımı ayrıntılı olarak gösterir.


🛡️ SSH Güvenliğini Artırmak için İpuçları

SSH bağlantı sorunlarını çözerken, güvenliği de göz ardı etmemek önemlidir. İşte SSH güvenliğini artırmak için bazı öneriler:

  1. Anahtar tabanlı kimlik doğrulaması kullanın:

    • Şifre yerine SSH anahtarları kullanarak daha güvenli bir bağlantı sağlayın.
    • Anahtarlarınızı parola korumalı olarak saklayın.
  2. Varsayılan SSH portunu değiştirin:

    sudo nano /etc/ssh/sshd_config
    Port 2222  # Örneğin 2222 olarak değiştirin
    sudo systemctl restart ssh
  3. Fail2Ban gibi araçları kullanın: Fail2Ban, başarısız bağlantı girişimlerini engelleyerek brute-force saldırılarına karşı koruma sağlar.

    sudo apt install fail2ban  # Debian/Ubuntu
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
  4. Root kullanıcısı için doğrudan SSH erişimini devre dışı bırakın:

    sudo nano /etc/ssh/sshd_config
    PermitRootLogin no
  5. IP kısıtlamaları uygulayın:

    sudo nano /etc/hosts.allow
    sshd: 192.168.1.100  # Yalnızca belirli IP’lerden erişime izin ver

📌 Pratik Senaryolar ve Çözümler

Senaryo 1: Yeni Kurulan Sunucuda SSH Bağlantısı Kurma

Adımlar:

  1. Sunucuya fiziksel erişim sağlayın.
  2. SSH servisini başlatın:
    sudo systemctl start ssh
    sudo systemctl enable ssh
  3. Güvenlik duvarını yapılandırın:
    sudo ufw allow 22/tcp
  4. SSH anahtarlarını oluşturun ve sunucuya ekleyin.
  5. Bağlantıyı test edin:
    ssh kullanici@sunucu_ip

Senaryo 2: SSH Anahtarlarını Yedekleme ve Yeniden Yükleme

Adımlar:

  1. Özel anahtarınızı yedekleyin:
    cp ~/.ssh/id_rsa ~/.ssh/id_rsa_backup
  2. Yeni bir anahtar çifti oluşturun:
    ssh-keygen -t rsa -b 4096 -C "yeni_anahtar"
  3. Yeni genel anahtarı sunucuya ekleyin.
  4. Eski anahtarı silin ve yeni anahtarla bağlantıyı test edin.

Senaryo 3: SSH Bağlantısında Ağ Geçidi (Gateway) Sorunu

Adımlar:

  1. Ağ geçidinin doğru olduğunu kontrol edin:
    ip route show
  2. Varsayılan ağ geçidini ayarlayın:
    sudo ip route add default via 192.168.1.1
  3. DNS ayarlarını kontrol edin:
    cat /etc/resolv.conf

📚 Kaynaklar ve İleri Okuma


🎯 Sonuç

SSH bağlantı sorunları, sistem yöneticileri ve geliştiriciler için sık karşılaşılan bir durumdur. Ancak, bu sorunların arkasında yatan nedenleri anlamak ve sistematik bir şekilde çözmek, hem zaman kazandırır hem de güvenliği artırır. Bu rehberde ele aldığımız adımları izleyerek, SSH bağlantılarınızı daha güvenilir ve verimli hale getirebilirsiniz.

Unutmayın, her sorunun bir çözümü vardır. Anahtar, sorunu doğru bir şekilde teşhis etmek ve adım adım ilerlemektir. SSH bağlantılarınızda yaşadığınız sorunları bu rehberdeki yöntemlerle çözmeyi deneyin ve deneyimlerinizi paylaşın!

Eğer karşılaştığınız özel bir durum varsa, yorum bölümünde paylaşabilirsiniz. Yardımcı olmaktan memnuniyet duyarım.

İyi bağlantılar! 🔗


Bu yazı Mistral ile otomatik oluşturulmuştur.