İçeriğe geç

Sorun gidermeBağlantı sorunları

SSH bağlantı sorunlarını çözün: refused, timed out, denied

Sık SSH hatalarını çözün: Connection refused, Connection timed out, Permission denied (publickey), değişen host anahtarı ve Too many authentication failures.

  • Başlangıç
  • 12 dk okuma
  • Güncellendi

Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13, Windows 11, macOS Tahoe 26

Bu sayfada
  1. Başlamadan önce
  2. Hızlı test: porta ulaşılabiliyor mu?
  3. ssh: connect to host … port 22: Connection timed out
  4. ssh: connect to host … port 22: Connection refused
  5. Permission denied (publickey)
  6. Permission denied, please try again.
  7. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  8. Received disconnect … Too many authentication failures
  9. kex_exchange_identification: read: Connection reset by peer
  10. WARNING: UNPROTECTED PRIVATE KEY FILE!
  11. Ne zaman destek bildirimi açmalı?
  12. Sonraki adımlar

SSH hataları birbirine benzer, ama her biri farklı bir katmanı gösterir: ağ yolu, sunucudaki SSH servisi veya girişin kendisi. Gördüğünüz mesajı bulun, kontrolleri yapın ve çözümü uygulayın. Örneklerde 203.0.113.10 yerine sunucunuzun adresini, alex yerine kullanıcınızı yazın.

Başlamadan önce

  • Sunucunun çalıştığından emin olun: durumunu Hizmetler › Ürünlerim altında, bilinen kesintileri Destek › Sunucu/Ağ Durumu sayfasında kontrol edin.
  • Sunucuda bir şeyi düzeltmeniz gerekirse diye ikinci bir giriş yolu hazır tutun: hizmet sayfanızda görünüyorsa web konsolu ya da dedicated planınız içeriyorsa IPMI.
  • Denemenin ayrıntılı kaydını alın; cevapların çoğu buradadır:
Bash
ssh -vvv alex@203.0.113.10

Hızlı test: porta ulaşılabiliyor mu?

Linux ve macOS

Bash
nc -vz 203.0.113.10 22

Windows

PowerShell
Test-NetConnection 203.0.113.10 -Port 22

Succeeded / open, ağ yolunun ve SSH servisinin sorunsuz olduğu anlamına gelir; aşağıdaki giriş hatalarına bakın. Refused SSH servisini, timed out ağı veya bir güvenlik duvarını işaret eder.

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

Hiçbir yanıt gelmiyor. Olasılık sırasına göre nedenler:

  1. Yanlış adres veya port. Hizmet sayfasındaki Birincil IP ile karşılaştırın. SSH'yi başka bir porta taşıdıysanız ssh -p 2222 [email protected] ile bağlanın.
  2. Bir güvenlik duvarı trafiği düşürüyor. Sunucuda (ufw, nftables), ofisinizde veya ağınızda. Mobil erişim noktası gibi başka bir ağ deneyin. Orada çalışıyorsa kendi ağınız giden SSH'yi engelliyordur.
  3. Sunucu kapalı veya açılıyor. Durumunu müşteri panelinde kontrol edin; hizmet sayfanızda görünüyorsa web konsolunu açın.

Güvenlik duvarını yakın zamanda değiştirdiyseniz güvenlik duvarı değişikliğinden sonra erişimi kaybetmek rehberine bakın.

ssh: connect to host … port 22: Connection refused

Sunucu yanıt verdi ama 22 numaralı portu dinleyen bir şey yok. Web konsolundan servisi kontrol edin:

Bash
sudo systemctl status ssh
sudo ss -tlnp | grep -i ssh
sudo sshd -t
  • Servis durmuşsa sudo systemctl start ssh ile başlatın. sudo sshd -t, başlamasını engelleyen yapılandırma hatalarını yazdırır.
  • Başka bir portu dinliyorsa o porta bağlanın.
  • Ubuntu: SSH, ssh.socket tarafından başlatılır. Port ayarını değiştirdikten sonra sudo systemctl daemon-reload ve sudo systemctl restart ssh.socket çalıştırın; aksi halde eski port etkin kalır.

RHEL ailesi sistemlerde servisin adı sshd'dir.

Permission denied (publickey)

Sunucu yalnızca anahtar kabul ediyor ve istemcinizin sunduğu anahtarların hiçbiri kullanıcının authorized_keys dosyasında yok.

  • Doğru kullanıcıyı kullandığınızı kontrol edin: root ile alex'in anahtar dosyaları ayrıdır.
  • İstemciyi doğru anahtara yönlendirin: ssh -i ~/.ssh/id_ed25519 [email protected].
  • Sunucuda sahipliği ve izinleri kontrol edin; SSH, başkalarının yazabildiği dosyaları yok sayar:
Bash
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  • Nedeni sunucu kaydında okuyun: sudo journalctl -u ssh --since "10 minutes ago".

Anahtar eklemek için SSH anahtarları rehberine bakın.

Permission denied, please try again.

Şifreyle giriş açık, ama kullanıcı adı veya şifre yanlış. Şifreler büyük/küçük harfe duyarlıdır ve yazarken hiçbir şey görünmez. Root girişleri kapalıysa (PermitRootLogin no) kendi kullanıcınızla giriş yapın. Birkaç başarısız denemeden sonra IP adresiniz Fail2ban veya CrowdSec tarafından engellenmiş olabilir; aşağıya bakın.

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

Sunucu, bilgisayarınızın kaydettiğinden farklı bir host anahtarı sunuyor. Yeniden kurulumdan sonra veya bir IP adresi yeni bir sunucuya verildiğinde bu beklenen bir durumdur. Yeniden kurulum yapmadıysanız bunu bir uyarı sayın ve devam etmeden önce bize sorun. Yeniden kurulumdan sonra yeni anahtarı kabul etmek için:

Bash
ssh-keygen -R 203.0.113.10

Received disconnect … Too many authentication failures

SSH agent'ınız birkaç anahtar sundu ve sunucu sınıra (MaxAuthTries) ulaşınca durdu. Yalnızca doğru anahtarı sunun:

Bash
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 alex@203.0.113.10

Bunu ~/.ssh/config içinde IdentitiesOnly yes ve IdentityFile ile kalıcı hale getirin.

kex_exchange_identification: read: Connection reset by peer

Bağlantı SSH el sıkışmasından önce kesildi. Sık nedenler: IP adresiniz Fail2ban veya CrowdSec tarafından engellenmiştir, bir tarama sırasında MaxStartups aşılmıştır ya da bir güvenlik duvarı bağlantıyı sıfırlıyordur. Web konsolundan kontrol edin:

Bash
sudo fail2ban-client status sshd
sudo fail2ban-client set sshd unbanip 198.51.100.7

198.51.100.7 yerine kendi genel IP adresinizi yazın. CrowdSec'te kararları sudo cscli decisions list ile listeleyin ve sizinkini sudo cscli decisions delete --ip 198.51.100.7 ile kaldırın.

WARNING: UNPROTECTED PRIVATE KEY FILE!

Özel anahtarınızı bilgisayarınızdaki başka kullanıcılar okuyabiliyor; bu yüzden istemci onu kullanmayı reddediyor.

Linux ve macOS

Bash
chmod 600 ~/.ssh/id_ed25519

Windows

PowerShell
icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "$($env:USERNAME):(R)"

Ne zaman destek bildirimi açmalı?

Port her ağdan kapalıysa ve web konsolu da çalışmıyorsa ya da sunucu hiç yanıt vermiyorsa bir destek bildirimi açın. İlişkili Hizmet altında sunucuyu seçin ve şunları ekleyin:

  • ssh -vvv çıktısı (şifreleriniz dışında hiçbir şeyi silmeyin),
  • bilgisayarınızdan mtr -rwc 50 203.0.113.10 veya pathping 203.0.113.10 çıktısı,
  • sorun başlamadan önce neyin değiştiği.

Sonraki adımlar

Sık sorulan sorular

Refused ile timed out arasındaki fark nedir?

Refused, sunucunun yanıt verdiği ama o portu dinleyen bir şey olmadığı anlamına gelir; SSH servisi durmuştur veya başka bir porttadır. Timed out hiçbir yanıt gelmediği anlamına gelir: bir güvenlik duvarı paketleri düşürüyordur, sunucu kapalıdır veya adres yanlıştır.

SSH'nin neden başarısız olduğunu nasıl görürüm?

ssh -vvv ile bağlanın ve hatadan önceki son satırları okuyun. Sunucuda SSH servisinin kaydı bir girişin neden reddedildiğini gösterir: Ubuntu ve Debian'da journalctl -u ssh.

SSH portunu değiştirdim ve artık bağlanamıyorum. Ne yapmalıyım?

Yeni portla ssh -p kullanarak bağlanın ve güvenlik duvarının buna izin verdiğinden emin olun. Ubuntu'da port değişikliği ayrıca systemctl daemon-reload ve ssh.socket yeniden başlatması gerektirir. Erişiminiz kesildiyse hizmet sayfanızda görünüyorsa web konsolunu kullanın.

IP adresim engellenmiş olabilir mi?

Evet; sunucuda Fail2ban veya CrowdSec çalışıyorsa ve birkaç kez hatalı giriş yaptıysanız. Başka bir ağdan bağlanın ya da erişimi olan birinden adresinizin engelini kaldırmasını isteyin.

Ne zaman destek bildirimi açmalıyım?

Denediğiniz her ağdan port kapalıysa ve web konsolu da çalışmıyorsa ya da sunucu hiçbir şeye yanıt vermiyorsa. ssh -vvv çıktısını ve sunucuya yönelik bir mtr veya pathping çıktısını ekleyin.

Kaynaklar

Şifre Oluştur

Lütfen onaylayın