SSH Bağlantısı Sürekli Kopuyor Sorunu Nasıl Çözülür?
SSH bağlantısının sürekli kopması internet bağlantısı, modem veya NAT zaman aşımı, SSH keepalive ayarları, sunucunun yüksek kaynak kullanımı, firewall kuralları ya da SSH servisindeki yapılandırmalardan kaynaklanabilir. Bağlantı özellikle birkaç dakika işlem yapılmadığında kopuyorsa ilk kontrol edilmesi gereken noktalardan biri SSH keepalive ayarlarıdır.
Sorunu çözmeden önce bağlantının ne zaman koptuğunu belirlemek önemlidir: Yalnızca boşta beklerken mi, yoğun işlem sırasında mı, yoksa rastgele zamanlarda mı?
SSH bağlantısı boşta beklerken kopuyorsa
En sık görülen senaryolardan biridir.
SSH oturumunda birkaç dakika hiçbir işlem yapmadığınızda bağlantı kopuyorsa aradaki:
- Modem
- Router
- NAT
- Firewall
- VPN
- İnternet sağlayıcısı
boşta kalan TCP bağlantısını sonlandırıyor olabilir.
Bu durumda istemci tarafında keepalive kullanmak faydalı olabilir.
ServerAliveInterval nasıl kullanılır?
Tek bağlantı için örneğin:
ssh -o ServerAliveInterval=60 kullanici@SUNUCU_IPkullanılabilir.
Bu ayar SSH istemcisinin bağlantının canlılığını kontrol etmek amacıyla belirli aralıklarla sunucuya protokol seviyesinde mesaj göndermesini sağlar.
Bağlantının uzun süre boşta kalması nedeniyle kapanmasını önlemeye yardımcı olabilir.
ServerAliveCountMax nedir?
Örneğin:
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 kullanici@SUNUCU_IPkullanılabilir.
Burada istemci belirli aralıklarla bağlantıyı kontrol eder ve sunucudan belirlenen sayıda yanıt alınamazsa oturumu sonlandırabilir.
Bu ayarlar kopmuş bir internet bağlantısını düzeltmez; bağlantının gerçekten kullanılamaz hale geldiğini daha kontrollü şekilde tespit etmeye yardımcı olur.
SSH config ile kalıcı keepalive ayarı
Her bağlantıda parametre yazmak istemiyorsanız istemci bilgisayarınızdaki:
~/.ssh/configdosyasını kullanabilirsiniz.
Belirli bir sunucu için örneğin:
Host sunucumHostName SUNUCU_IPUser kullaniciServerAliveInterval 60ServerAliveCountMax 3tanımlanabilir.
Daha sonra:
ssh sunucumile bağlanabilirsiniz.
Bütün SSH bağlantılarına uygulamak yerine yalnızca ihtiyaç duyduğunuz sunucuda kullanmak daha kontrollü olabilir.
Sunucu tarafında keepalive ayarları
SSH sunucusunda da bağlantı kontrolüyle ilgili ayarlar bulunur.
Yapılandırma dosyası genellikle:
/etc/ssh/sshd_configkonumundadır.
Burada:
ClientAliveIntervalve:
ClientAliveCountMaxayarları bulunabilir.
Bu ayarlar sunucu tarafındaki SSH oturumlarının davranışını etkiler.
Değişiklik yapmadan önce mevcut yapılandırmayı ve ihtiyacınızı kontrol edin.
sshd_config değiştirdikten sonra mutlaka test edin
SSH yapılandırmasını değiştirdiyseniz:
sudo sshd -tile syntax kontrolü yapın.
Hata yoksa dağıtıma göre:
sudo systemctl reload sshveya:
sudo systemctl reload sshdkullanılabilir.
En önemli güvenlik önlemlerinden biri:
Mevcut SSH oturumunu kapatmadan ikinci terminalden yeni bağlantının çalıştığını test etmektir.
Yanlış SSH yapılandırması uzak sunucuya erişiminizi tamamen kaybetmenize neden olabilir.
İnternet bağlantısını kontrol edin
SSH kopmasının nedeni her zaman sunucu değildir.
Kendi bilgisayarınızın internet bağlantısında kısa kesintiler oluşuyorsa SSH oturumu da etkilenebilir.
Sunucuya sürekli ping göndererek temel bağlantıyı gözlemleyebilirsiniz.
Windows:
ping SUNUCU_IP -tLinux:
ping SUNUCU_IPPing tek başına SSH sağlığını kanıtlamaz ancak bağlantıda genel paket kaybı veya kesinti olup olmadığını anlamaya yardımcı olabilir.
Wi-Fi kullanıyorsanız
Kararsız Wi-Fi bağlantıları SSH oturumlarında kopmalara neden olabilir.
Özellikle:
- Zayıf Wi-Fi sinyali
- Ağlar arasında geçiş
- Modemin yeniden bağlantı kurması
- Bilgisayarın güç tasarrufu
- VPN bağlantısının değişmesi
mevcut TCP bağlantısını bozabilir.
Mümkünse sorunun istemci ağından kaynaklanıp kaynaklanmadığını anlamak için farklı ve stabil bir bağlantıyla test yapılabilir.
VPN SSH bağlantısını etkileyebilir mi?
Evet.
VPN açılıp kapandığında veya VPN sunucusu değiştiğinde cihazın ağ rotası ve dış IP adresi değişebilir.
Mevcut SSH oturumu bu nedenle kopabilir.
SSH yalnızca VPN açıkken veya yalnızca VPN kapalıyken kopuyorsa VPN bağlantısını ayrıca araştırın.
Sunucunun RAM'i tükeniyorsa SSH kopabilir
Sunucu ciddi bellek baskısı altındaysa SSH dahil birçok servis yavaşlayabilir.
Kontrol:
free -hÖzellikle:
-
available RAM- Swap kullanımı
değerlerine bakın.
OOM olaylarını araştırmak için:
journalctl -k | grep -i -E 'out of memory|oom|killed process'kullanılabilir.
SSH process'inin doğrudan OOM nedeniyle sonlandırılması şart değildir; genel sistem kaynak sıkıntısı da bağlantı kalitesini etkileyebilir.
CPU %100 ise SSH neden yavaşlar?
Sunucunun işlemcisi sürekli tamamen meşgulse SSH komutlarına yanıt gecikebilir.
Kontrol:
topveya:
htopEn fazla CPU kullanan process'ler:
ps aux --sort=-%cpu | headile görülebilir.
SSH bağlantısı özellikle yoğun trafik veya ağır bir işlem sırasında bozuluyorsa CPU ve load average değerlerini kontrol edin.
Disk problemi SSH'yi etkileyebilir mi?
Disk tamamen doluysa sistem servisleri çeşitli problemler yaşayabilir.
Kontrol:
df -hInode kontrolü:
df -iÖzellikle log, geçici dosya veya diğer sistem işlemleri yazma yapamıyorsa sunucuda beklenmeyen davranışlar görülebilir.
SSH servisi yeniden başlıyor olabilir
SSH servisinin durumunu kontrol etmek için dağıtıma göre:
systemctl status sshveya:
systemctl status sshdkullanılabilir.
Servisin yakın zamandaki kayıtlarını incelemek için:
journalctl -u sshveya:
journalctl -u sshdkullanılabilir.
Servisin sürekli restart olduğunu görüyorsanız nedenini loglardan araştırın.
SSH loglarını kontrol edin
Ubuntu ve Debian sistemlerinde authentication kayıtları çoğunlukla:
/var/log/auth.logiçerisinde bulunabilir.
Canlı takip:
sudo tail -f /var/log/auth.logSSH bağlantısı koptuğu anda loglarda ilgili bir kayıt oluşup oluşmadığını kontrol edin.
Sunucu tarafında hiçbir kayıt yoksa sorun istemci, ağ veya aradaki bağlantı ekipmanlarında olabilir.
Firewall bağlantıyı kesebilir mi?
Evet.
Sunucu veya hosting sağlayıcısı tarafındaki firewall kuralları belirli bağlantıları etkileyebilir.
Ayrıca ağ üzerinde stateful firewall veya NAT cihazları boşta kalan bağlantıları belirli bir süre sonra kapatabilir.
Bu nedenle bağlantının tam olarak kaç dakika sonra koptuğunu gözlemlemek faydalıdır.
Her seferinde yaklaşık aynı süre sonunda kopuyorsa timeout ihtimali güçlenir.
Fail2ban SSH bağlantısını koparır mı?
Fail2ban normalde belirli başarısız giriş davranışlarına karşı IP adreslerini engellemek için kullanılır.
Kontrol:
sudo fail2ban-client statusAncak aktif ve başarıyla doğrulanmış SSH oturumunun rastgele kopmasının ilk şüphelisi Fail2ban değildir.
Yeni bağlantı kuramıyorsanız ve IP adresiniz engellenmiş görünüyorsa ayrıca araştırılabilir.
Uzun komut çalıştırırken SSH koparsa ne olur?
SSH oturumunda uzun süren bir işlem çalıştırıyorsanız bağlantının kopması işlemi de etkileyebilir.
Örneğin:
- Büyük backup
- Uzun script
- Veri aktarımı
- Derleme
- Import veya export
işlemlerinde terminal oturumuna bağımlı çalışmak riskli olabilir.
Bu tür durumlarda
tmux veya screen kullanmak oldukça faydalıdır.tmux neden kullanılır?
tmux, terminal oturumunu SSH bağlantısından bağımsız tutmaya yardımcı olur.Örneğin:
tmuxile oturum başlatıp uzun işleminizi çalıştırabilirsiniz.
SSH bağlantısı kopsa bile tmux oturumu sunucuda devam edebilir.
Tekrar bağlandıktan sonra mevcut oturumları:
tmux lsile görebilir ve uygun oturuma:
tmux attachile geri dönebilirsiniz.
Bu özellikle backup ve uzun süren yönetim işlemlerinde çok kullanışlıdır.
SSH debug modu ile kopma araştırılabilir
Bağlantı davranışını ayrıntılı görmek için:
ssh -vv kullanici@SUNUCU_IPveya daha ayrıntılı:
ssh -vvv kullanici@SUNUCU_IPkullanabilirsiniz.
Debug çıktısı bağlantının hangi aşamada sorun yaşadığını anlamaya yardımcı olabilir.
Ancak çıktıyı internette paylaşmadan önce IP adresleri, kullanıcı bilgileri ve diğer hassas verileri kontrol edin.
SSH bağlantısı donuyor ama hemen kopmuyorsa
Bazen terminal cevap vermeyi bırakır ancak SSH istemcisi bağlantının koptuğunu hemen fark etmez.
Keepalive ayarları böyle durumlarda kullanılamaz hale gelen bağlantının daha hızlı tespit edilmesine yardımcı olabilir.
Ancak temel ağ sorunu varsa keepalive bunu çözmez.
Sunucuyu yeniden başlatmak çözüm mü?
Reboot geçici olarak problemi ortadan kaldırabilir ancak asıl nedeni gizleyebilir.
Sorun:
- RAM
- CPU
- Disk
- SSH servisi
- Ağ
- Firewall
- VPS sağlayıcısı
kaynaklıysa önce logları ve sistem durumunu kontrol etmek daha doğru olur.
Özellikle üretim sunucusunu yalnızca SSH koptuğu için sürekli reboot etmek doğru bir çözüm değildir.
SSH bağlantısı kopuyor ve tekrar bağlanamıyorsanız
Sunucuya SSH dışında erişmek gerekebilir.
VPS sağlayıcınız destekliyorsa:
- Web console
- VNC console
- Serial console
- Rescue mode
kullanılabilir.
Bu yöntemler SSH yapılandırmasını veya servisini onarmak için hayat kurtarıcı olabilir.
SSH bağlantı kopması için hızlı kontrol sırası
Şu sırayla ilerleyebilirsiniz:
1. Kopmanın yalnızca boşta beklerken mi oluştuğunu belirleyin.
2.
ServerAliveInterval ile istemci keepalive testi yapın.3. İnternet ve Wi-Fi bağlantınızı kontrol edin.
4. VPN kullanıyorsanız VPN olmadan test edin.
5. Sunucuya ping sırasında paket kaybı olup olmadığını gözlemleyin.
6.
free -h ile RAM durumunu kontrol edin.7.
top ile CPU ve load durumunu inceleyin.8.
df -h ile disk alanını kontrol edin.9. SSH servisinin durumuna bakın.
10. SSH ve authentication loglarını inceleyin.
11. Firewall ve NAT timeout ihtimalini değerlendirin.
12. Uzun işlemler için
tmux veya screen kullanın.13. Gerekirse
ssh -vvv ile bağlantıyı ayrıntılı inceleyin.Sık yapılan hatalar
SSH bağlantı kopması araştırılırken şu hatalardan kaçının:
- Her kopmayı SSH servisinden kaynaklanıyor sanmak
- Kendi internet bağlantısını kontrol etmemek
- Wi-Fi veya VPN etkisini gözden kaçırmak
- Keepalive ayarlarını yanlış yorumlamak
- Sunucunun RAM ve CPU durumuna bakmamak
- SSH loglarını incelememek
- Uzun işlemleri doğrudan normal SSH terminalinde bırakmak
- Sorunun nedenini araştırmadan sunucuyu sürekli reboot etmek
-
sshd_config değişikliğinden sonra çalışan oturumu hemen kapatmakÖzetle, SSH bağlantısı sürekli kopuyorsa önce kopmanın belirli bir boşta kalma süresinden sonra mı yoksa rastgele mı gerçekleştiğini belirlemek gerekir. Boşta kalan bağlantılarda keepalive ayarları yardımcı olabilir; rastgele kopmalarda ise internet, sunucu kaynakları, firewall ve SSH logları birlikte incelenmelidir.
Uzun süren sunucu işlemlerinde ise bağlantının hiçbir zaman kopmayacağını varsaymak yerine tmux veya screen kullanmak, SSH bağlantısı kesilse bile yapılan işin devam etmesini sağlayan en güvenli yöntemlerden biridir.
