SSH Connection Refused Hatası Nasıl Çözülür? SSH Bağlantı Sorunu
SSH Connection Refused hatası, bilgisayarınızın sunucuya ulaşabildiğini ancak bağlanmaya çalıştığınız IP adresi ve portta SSH bağlantısını kabul eden bir servis bulunmadığını veya bağlantının aktif olarak reddedildiğini gösterir. En sık nedenler SSH servisinin çalışmaması, yanlış port kullanılması, SSH'nin farklı bir adreste dinlemesi veya firewall kurallarıdır.
Örneğin:
ssh root@SUNUCU_IPkomutundan sonra:
Connection refusedhatası alıyorsanız önce kullanıcı adı veya parola yerine SSH servisi, port ve ağ yapılandırmasını kontrol etmek gerekir.
Connection Refused ile Permission Denied aynı hata değildir
Bu iki hata birbirinden farklıdır.
Connection Refused:
SSH sunucusuyla bağlantı kurulamıyor. Genellikle servis, port veya ağ yapılandırması araştırılır.
Permission Denied:
SSH sunucusuna ulaşılmıştır ancak kimlik doğrulama başarısız olmuştur. Kullanıcı, parola, SSH key veya yetkilendirme ayarları araştırılır.
Bu nedenle
Connection refused hatasında ilk olarak parolayı değiştirmeye çalışmak çoğu durumda doğru başlangıç değildir.1. Sunucu IP adresini kontrol edin
Öncelikle doğru IP adresine bağlandığınızdan emin olun.
Örnek:
ssh root@203.0.113.10VPS sağlayıcınız sunucu IP'sini değiştirdiyse eski IP'ye bağlantı kurmaya çalışıyor olabilirsiniz.
Özellikle:
- Sunucu yeniden oluşturulduysa
- Yeni VPS kurulduysa
- IP değişikliği yapıldıysa
- DNS üzerinden bağlanıyorsanız
hedef adresi tekrar doğrulayın.
2. SSH hangi portu kullanıyor kontrol edin
SSH varsayılan olarak genellikle TCP 22 portunu kullanır.
Standart bağlantı:
ssh kullanici@SUNUCU_IPşeklindedir.
Ancak SSH portu değiştirilmişse portu belirtmeniz gerekir.
Örneğin port 2222 ise:
ssh -p 2222 kullanici@SUNUCU_IPkullanılır.
Sunucu 2222 portunda SSH beklerken 22 portuna bağlanmaya çalışırsanız bağlantı başarısız olabilir.
3. SSH servisi çalışıyor mu?
Sunucunun web konsolu veya hosting sağlayıcısının konsol erişimi bulunuyorsa sunucuya buradan girerek SSH servisinin durumunu kontrol edebilirsiniz.
Ubuntu ve Debian sistemlerinde servis adı çoğunlukla:
ssholabilir.
Kontrol:
sudo systemctl status sshBazı dağıtımlarda servis:
sshdolarak adlandırılır:
sudo systemctl status sshdServis durmuşsa bunun nedenini araştırmak gerekir.
Gerekirse uygun servis adıyla:
sudo systemctl start sshveya:
sudo systemctl start sshdkullanılabilir.
4. SSH servisinin otomatik başlamasını kontrol edin
Sunucu reboot sonrasında SSH başlamıyorsa systemd servisinin etkin olup olmadığını kontrol edebilirsiniz.
Örneğin:
sudo systemctl is-enabled sshGerekliyse ve dağıtımınızda servis adı
ssh ise:sudo systemctl enable sshkullanılabilir.
Servis adının sisteminize göre değişebileceğini unutmayın.
5. SSH gerçekten port dinliyor mu?
Sunucu konsolundan:
ss -lntpkomutunu kullanabilirsiniz.
22 portunu kontrol etmek için:
ss -lntp | grep ':22'kullanılabilir.
SSH farklı bir port kullanıyorsa o portu kontrol edin.
Örneğin:
ss -lntp | grep ':2222'Hiçbir sonuç görünmüyorsa SSH daemon beklediğiniz portta dinlemiyor olabilir.
6. SSH yapılandırmasını kontrol edin
OpenSSH Server yapılandırması genellikle:
/etc/ssh/sshd_configdosyasında bulunur.
Burada özellikle:
Portayarını kontrol edin.
Örneğin:
Port 2222bulunuyorsa bağlantıda:
ssh -p 2222 kullanici@SUNUCU_IPkullanılması gerekir.
Ancak SSH yapılandırma dosyasını değiştirirken son derece dikkatli olun.
Yanlış yapılandırma uzaktan erişiminizi tamamen kaybetmenize neden olabilir.
7. SSH yapılandırmasını değiştirmeden önce test edin
OpenSSH Server yapılandırmasında değişiklik yaptıktan sonra mevcut SSH oturumunu kapatmadan önce yapılandırmayı doğrulamak önemlidir.
Birçok sistemde:
sudo sshd -tkomutu yapılandırma sözdizimini kontrol etmek için kullanılabilir.
Komut hata vermiyorsa yapılandırmanın sözdizimi açısından geçerli olması beklenir.
Buna rağmen mevcut SSH oturumunu hemen kapatmayın.
Yeni bir terminal açarak ikinci bağlantının başarılı olduğunu doğrulamak güvenli bir yöntemdir.
8. Firewall SSH portunu engelliyor olabilir
Ubuntu sistemlerinde UFW kullanılıyorsa:
sudo ufw statusile mevcut kuralları görebilirsiniz.
SSH 22 portunda çalışıyorsa gerekli kural yapılandırmaya göre örneğin:
sudo ufw allow 22/tcpolabilir.
SSH 2222 portunda çalışıyorsa:
sudo ufw allow 2222/tcpgibi ilgili port için izin gerekir.
Ancak firewall'u tamamen kapatmak yerine yalnızca gerekli portlara kontrollü izin vermek daha güvenlidir.
SSH portunu değiştirmeden önce firewall kuralını ekleyin.
Aksi halde mevcut bağlantınız kapandıktan sonra sunucuya tekrar erişemeyebilirsiniz.
9. Hosting sağlayıcısının firewall sistemini kontrol edin
Sunucunun kendi firewall'u dışında VPS sağlayıcısının:
- Cloud firewall
- Security group
- Network ACL
- Harici firewall
sistemi bulunabilir.
Linux içerisinde port açık olsa bile sağlayıcı panelinde SSH portu engellenmiş olabilir.
Bu nedenle sorun devam ediyorsa hem işletim sistemi hem de sağlayıcı tarafındaki ağ kurallarını kontrol edin.
10. SSH yalnızca belirli bir IP adresinde dinliyor olabilir
sshd_config içerisindeki ListenAddress gibi ayarlar SSH servisinin hangi adreslerde dinleyeceğini etkileyebilir.SSH yalnızca localhost üzerinde dinliyorsa dışarıdan bağlantı kurulamaz.
Kontrol için:
ss -lntpçıktısı oldukça faydalıdır.
Örneğin:
0.0.0.0:22veya uygun IPv6 gösterimi SSH'nin ilgili arayüzlerde dinlediğini gösterebilir.
Yapılandırmayı değiştirirken sunucunun ağ mimarisini dikkate alın.
11. OpenSSH Server kurulu olmayabilir
Özellikle yeni veya minimal Linux kurulumlarında SSH istemcisi bulunmasına rağmen OpenSSH Server kurulu olmayabilir.
Debian veya Ubuntu tabanlı sistemlerde paket durumu kontrol edilebilir.
Gerekliyse:
sudo apt updateardından:
sudo apt install openssh-serverkullanılabilir.
Kurulumdan sonra:
sudo systemctl status sshile servis kontrol edilebilir.
Ancak uzaktaki sunucuya zaten SSH ile erişemiyorsanız bu işlemleri sağlayıcının web/VNC/seri konsolu gibi alternatif erişimi üzerinden yapmanız gerekebilir.
12. Sunucu gerçekten çalışıyor mu?
Connection Refused hatasında yalnızca SSH'ye odaklanmadan VPS'nin durumunu da kontrol edin.
Hosting panelinden:
- Sunucu açık mı?
- Reboot işlemi tamamlandı mı?
- Ağ arayüzü çalışıyor mu?
- Doğru IP atanmış mı?
kontrol edilebilir.
Sunucunun web sitesi çalışıyor olsa bile SSH servisi durmuş olabilir. Aynı şekilde SSH sorunu olması bütün sunucunun kapalı olduğu anlamına gelmez.
13. Port dışarıdan erişilebilir mi?
İstemci bilgisayarınızdan uygun araçlarla belirli porta bağlantı testi yapılabilir.
Örneğin Linux veya macOS ortamında
nc kuruluysa:nc -vz SUNUCU_IP 22kullanılabilir.
SSH farklı porttaysa:
nc -vz SUNUCU_IP 2222şeklinde test edilebilir.
Windows tarafında PowerShell ile:
Test-NetConnection SUNUCU_IP -Port 22kullanılabilir.
Bu testler port seviyesinde bağlantının kurulup kurulamadığını anlamaya yardımcı olur.
14. SSH portunu değiştirmek güvenliği artırır mı?
Varsayılan 22 portunu değiştirmek internetteki otomatik tarama ve log gürültüsünü azaltabilir ancak tek başına güçlü bir güvenlik önlemi değildir.
Asıl önemli önlemler:
- SSH key kullanmak
- Güçlü kimlik doğrulama politikaları
- Gereksiz root girişini sınırlandırmak
- Firewall kullanmak
- Sistemi güncel tutmak
- Başarısız girişleri takip etmek
gibi uygulamalardır.
Sadece port değiştirmek sunucuyu güvenli hale getirmez.
15. SSH ayarını değiştirdikten sonra bağlantı kesildiyse ne yapılmalı?
Yanlış port veya firewall yapılandırması nedeniyle kendinizi sunucunun dışında bıraktıysanız VPS sağlayıcısının:
- Web console
- VNC console
- Serial console
- Rescue mode
gibi alternatif erişim yöntemleri kullanılabilir.
Bu nedenle SSH veya firewall ayarlarında kritik değişiklik yapmadan önce sağlayıcınızda alternatif konsol erişiminin bulunduğunu bilmek önemlidir.
16. fail2ban Connection Refused oluşturur mu?
Fail2ban belirli IP adreslerini engellemek için firewall kuralları oluşturabilir.
Ancak engellenen bağlantının istemci tarafında nasıl göründüğü kullanılan firewall kuralına göre değişebilir; her durumda mutlaka
Connection refused görülmez.Belirli bir IP'den bağlanamıyor ancak başka ağdan bağlantı kurulabiliyorsa:
- Fail2ban
- Firewall
- IP bazlı erişim kuralları
incelenebilir.
Sunucu konsolundan Fail2ban durumunu kontrol etmek için yapılandırmaya bağlı olarak:
sudo fail2ban-client statuskullanılabilir.
17. SSH logları nasıl kontrol edilir?
Dağıtıma göre SSH kayıtları farklı yerlerde bulunabilir.
Ubuntu/Debian sistemlerinde örneğin:
/var/log/auth.logkullanılabilir.
systemd journal üzerinden de:
journalctl -u sshveya servis adına göre:
journalctl -u sshdkontrol edilebilir.
Ancak istemci daha SSH servisine ulaşamıyorsa bağlantı denemesi authentication loglarına hiç gelmeyebilir.
Bu da sorunun kimlik doğrulamadan önceki bir aşamada olduğunu düşündürebilir.
18. Connection Timed Out ile Connection Refused farkı
Bu iki hata da birbirinden ayrılmalıdır.
Connection Refused
Hedefe erişilmiş ancak ilgili bağlantı kabul edilmemiş olabilir. Yanlış port veya çalışmayan servis sık görülen nedenlerdir.
Connection Timed Out
Bağlantı isteğine belirlenen sürede yanıt alınamamıştır. Firewall'un paketleri düşürmesi, ağ problemi, yanlış IP veya sunucunun erişilememesi gibi nedenler araştırılabilir.
Hata mesajındaki bu ayrım sorunun kaynağını bulmayı kolaylaştırır.
19. Permission Denied görmeye başladıysanız ilerleme kaydetmiş olabilirsiniz
Başlangıçta:
Connection refusedalırken düzenleme sonrasında:
Permission deniedgörüyorsanız artık SSH servisine ulaşabiliyor olabilirsiniz.
Bu durumda problem farklı aşamaya geçmiştir.
Artık:
- Kullanıcı adı
- Parola
- SSH key
-
authorized_keys-
PasswordAuthentication-
PubkeyAuthentication- Root giriş politikası
gibi kimlik doğrulama ayarları incelenmelidir.
SSH Connection Refused için hızlı kontrol sırası
Sorunu araştırırken şu sıra kullanılabilir:
1. Sunucunun açık olduğunu doğrulayın.
2. Doğru IP adresini kontrol edin.
3. Doğru SSH portunu kullandığınızdan emin olun.
4. Sağlayıcının web konsoluna erişin.
5.
systemctl status ssh veya sshd ile servisi kontrol edin.6.
ss -lntp ile SSH'nin hangi portta dinlediğini bulun.7.
sshd_config içerisindeki port ve dinleme ayarlarını kontrol edin.8.
sshd -t ile yapılandırmayı doğrulayın.9. Sunucunun firewall kurallarını kontrol edin.
10. VPS sağlayıcısının harici firewall kurallarını kontrol edin.
11. Logları inceleyin.
12. Değişikliklerden sonra yeni bir terminalden SSH bağlantısını test edin.
En önemli güvenlik uyarısı
SSH üzerinde uzaktan çalışırken aynı anda:
- SSH portunu değiştirmek
- Firewall kurallarını değiştirmek
- Root erişimini kapatmak
- Parola girişini kapatmak
gibi birden fazla kritik değişikliği doğrulamadan uygulamak sunucu erişiminizi tamamen kaybetmenize neden olabilir.
Daha güvenli yöntem değişiklikleri tek tek yapmak ve her değişiklikten sonra ikinci bir SSH oturumuyla bağlantıyı doğrulamaktır.
Özetle, SSH Connection Refused hatasında önce parola veya SSH key yerine bağlantı katmanını kontrol etmek gerekir. Doğru IP ve port kullanıldığını doğrulayın, SSH servisinin çalıştığını ve ilgili portu dinlediğini kontrol edin, ardından firewall ve hosting sağlayıcısının ağ kurallarını inceleyin.
SSH servisine bağlantı kurulduktan sonra
Permission Denied gibi bir hata alınırsa artık kullanıcı ve kimlik doğrulama ayarlarına geçilebilir.