SSH oturumunu canlı tutmaya yönelik tavsiyelerin çoğu «ServerAliveInterval 30 ekleyin» noktasında durur ve işe yarayan kısımları dışarıda bırakır. Anahtar kelime, istemci tarafındaki ve yalnızca kanal sessiz kaldığında tetiklenen bir zamanlayıcıdır, saniyeleri değil yanıtsız yoklamaları sayar ve ilk eşleşen değerin kazandığı bir dosyada yaşar. Bu üç özellikte hata yaparsanız sağlıklı bir VPN oturumu yine de düşer, ölü olan ise asılı kalır.

İki yön farklı daemonlara aittir

ServerAliveInterval'ı ssh istemciniz okur. ClientAliveInterval'ı karşı taraftaki sshd okur ve ters yönde, sunucudan istemciye doğru yoklar. Bunlar birbirinin diğer adı değildir ve birlikte çalışmazlar, bu yüzden birini ayarlamak diğer ucun davranışını etkilemez. Bunları karıştırmak, bir düzeltmenin bir makinede işe yarayıp bir sonrakinde yaramamasının olağan nedenidir.

İkisi de sıfırı kabul eder. Sıfırda istemci hiçbir şey göndermez, sunucu tarafında ise sıfır ClientAliveCountMax, yanıtsız kontrollerin ardından gelecek bağlantı kesmesini devre dışı bırakır.

Bir yoklama neyi kanıtlar, neyi kanıtlamaz

Ayarlanan aralık sunucudan veri gelmeden geçtikten sonra istemci mevcut şifreli kanaldan küçük bir istek gönderir ve yanıt bekler. ServerAliveCountMax, oturum düşürülmeden önce bunlardan kaçının yanıtsız kalabileceğini belirler. Aralık 60 ve sayı 3 olduğunda istemci yaklaşık üç dakikalık sessizlikten sonra pes eder ve bu sayı ağ standardı değil, sizin yapılandırmanızın bir özelliğidir. Aralığı varsayılan 0 değerinde bırakırsanız hiçbir yoklama gönderilmez, bu yüzden standart bir istemci ölü bir bağlantı üzerinde süresiz oturabilir.

Alışveriş SSH taşıma katmanının içinde gerçekleştiği için bir yanıt, karşı tarafın SSH sürecinin hâlâ okuyup yazdığını kanıtlar. O oturum içinde başlattığınız program hakkında hiçbir şey söylemez: bir veritabanı istemcisi, yönlendirilmiş bir port veya uzun süre çalışan bir betik, taşıma katmanı yoklamalara keyifle yanıt verirken takılı kalmış olabilir.

TCPKeepAlive bir katman alttaki ayrı bir mekanizmadır. Onu çekirdek yönetir, şifreli değildir ve SSH daemonu takılmış bir karşı taraf bile onu karşılayabilir. Bu yüzden soket değil de oturum sizin için önemli olduğunda SSH düzeyindeki yoklama daha anlamlı bir sinyaldir.

Hangi değerin hayatta kalacağını sıralama belirler

OpenSSH her parametre için aldığı ilk değeri uygular, bu yüzden belirli bir Host bloğu, eşleşecek daha geniş herhangi bir bloktan önce gelmelidir. Joker karakterli varsayılanları dosyanın sonuna koyun, başına değil, ve aşağıdaki Match bloğunun önceden ayarlanmış bir değeri geçersiz kılamayacağını unutmayın. OpenSSH istemci yapılandırma başvurusu ilk değer kuralını doğrudan belirtir ve paylaşılan bir yapılandırmayı yeniden düzenlemeden önce bir kez okumaya değer.

Komut satırı seçenekleri dosyayı yener, bu da geçici bir deneyi ucuz kılar:

ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=4 office-shell

İstemcinin gerçekte neyi çözdüğünü, yazdığınızı sandığınız şey yerine görmek için ondan etkin yapılandırmayı dökmesini isteyin. Çıktı o ana bilgisayar adı için birleştirilmiş değerleri içerir ve yoldan çıkmış önceki bir bloğu yakalamanın en hızlı yolu budur:

ssh -G office-shell | grep -i alive

Keepalive'lar bir tünelde ne yapar

Düzenli trafik, durum tutan bir NAT veya güvenlik duvarı eşlemesinin süresinin dolmasını engeller; bu, boşta kalan akışları birkaç dakika sonra düşüren bir VPN'de gerçek bir faydadır. Her 60 saniyede gelen yoklamalar, herhangi bir uygulama verisi taşımadan bu eşlemeyi tazeler.

Kaybolmuş bir yolu yeniden kuramazlar. Tünel arayüzü kaybolduğunda yoklamalar da her şey gibi başarısız olur ve sayı tükendiğinde oturum sona erer. Canlılık algılama ile yol kurtarma farklı sorunlardır ve ssh_config içinde yalnızca ilki yapılandırılabilir. Aralık ve sayının size gerçekten kazandırdığı şey, istemcinin ne kadar çabuk fark ettiğidir ve kullanıcının donma olarak yaşadığı kısım tam olarak budur.

Çoklanmış bağlantılar bir kat ekler. ControlMaster devredeyken yoklamalar ana bağlantıya aittir ve mevcut bir ana üzerindeki yeni oturum o ana bağlantının müzakere ettiğini devralır. Mux ana bağlantısı takılmışsa başka bir pencere açmak yolu yeniden sınamaz.

Ayarı baştan sona doğrulamak

Sunucuda dosyayı okuyup hangi include'un kazandığını tahmin etmek yerine daemonun etkin yapılandırmasını dökün:

sshd -T | grep -i clientalive

Ardından hata ayıklama çıktısı açık gerçek bir oturumu izleyin. Sayı tükendiğinde istemci bir zaman aşımı satırı yazdırır ve çevresindeki zaman damgaları sessizliğin sürekli mi olduğunu yoksa yoklamaların hiç gönderilmediğini mi gösterir. Yoklama trafiği olmadan ölen bir oturumda anahtar kelime genellikle hiç eşleşmemiş bir blokta bulunur.

Yalnızca bir tünelden ulaştığınız her makine için iki kontrol eklemeye değer: çözülen aralığın amaçladığınız aralık olduğunu ve bu aralığın sayıyla çarpımının VPN geçidindeki boşta kalma zaman aşımından kısa olduğunu doğrulayın. İkinci sayı daha büyükse geçit akışı önce sessizce düşürür ve SSH yoklaması herhangi bir şey bildirme fırsatı bulamaz.

İlgili makaleler