OpenSSH için varsayılan boşta kalma zaman aşımı süresi nedir?


25

Bazı uyumluluk belgeleri için ihtiyacım olan bu basit sorunun cevabını bulamıyorum.

Varsayılan bir CentOS 6.5 (OpenSSH 5.3p1-94.el6) kurulumunda, bir kullanıcının SSH oturumu ne kadar boşta kaldıktan sonra sona erecek? Boşta kalma zaman aşımını artırmak için aşağıdakilerin ayarlanabileceğine inanıyorum, ancak bunlar varsayılan olarak yorumlanıyor.

$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

Ayrıca, geçerli sshdayarların bir listesini dökmek için bir komut var mı? Hiçbir şey görmüyorum man sshd.


3
Bazı mermiler, bir zaman aşımından sonra çıkmak üzere ayarlanabilir. Bu, ssh oturumunun sonlandırılmasına neden olur. TMOUT ortam değişkeninizin ayarlanmış olup olmadığını kontrol edin.
Kenster

Yanıtlar:


23

Yorumlanan satırlar sshd_configgenellikle varsayılanları görüntüler. Sorunuzdaki tüm satırlarda durum budur. Bunu, sshd_configmanpage'de doğrulayabilirsiniz . İşte ilgili snippet'ler:

TCPKeepAlive

      Sistemin TCP korunma mesajları diğer tarafa mı gönderilmesi gerektiğini belirtir. Gönderilirlerse, bağlantının kesilmesi veya makinelerden birinin çökmesi uygun şekilde fark edilir. Bununla birlikte, rota geçici olarak devre dışı kaldığında bağlantıların kesileceği ve bazı insanların can sıkıcı bulduğu anlamına gelir. Öte yandan, eğer TCP koruyucuları gönderilmezse, oturumlar sunucuda süresiz olarak asılı kalabilir ve “hayalet” kullanıcıları bırakıp sunucu kaynaklarını tüketebilir.

      Varsayılan ayar “evet” (TCP koruma mesajları göndermek için) ve sunucu ağın çöküp kapanmadığını veya istemci ana bilgisayarının çöktüğünü fark edecek. Bu sonsuz asılı oturumları önler.

      TCP kalıcı mesajları devre dışı bırakmak için değer "hayır" olarak ayarlanmalıdır.

      Bu seçenek önceden denirdi KeepAlive.

ClientAliveCountMax

      İstemciden geri herhangi bir mesaj alınmadan sshd (8) olmadan gönderilebilecek canlı müşteri mesajlarının sayısını (aşağıya bakınız) ayarlar . Müşteri canlı mesajları gönderilirken bu eşiğe ulaşılırsa, sshd istemcinin bağlantısını keserek oturumu sonlandırır. İstemcinin canlı iletilerinin kullanımının çok farklı olduğunu belirtmek önemlidir.TCPKeepAlive (altında)(yukarıda). Canlı canlı mesajlar şifreli kanaldan gönderilir ve bu nedenle taklit edilemez. Etkin olan TCP keepalive seçeneği TCPKeepAlivesahtedir. İstemci canlı mekanizması, istemci veya sunucu bir bağlantının ne zaman etkin olamayacağını bilmeye bağlı olduğunda değerlidir.

      Varsayılan değer 3'tür ClientAliveInterval(aşağıya bakınız) 15 olarak ayarlanmışsa ve varsayılan değerde kalırsa ClientAliveCountMax, yanıt vermeyen SSH istemcilerinin yaklaşık 45 saniye sonra bağlantısı kesilecektir. Bu seçenek yalnızca protokol sürüm 2 için geçerlidir.

ClientAliveInterval

      İstemciden herhangi bir veri alınmadıysa, sshd (8) şifrelenmiş kanaldan istemciden bir yanıt istemek için bir mesaj gönderirse , saniye cinsinden bir zaman aşımı aralığını ayarlar . Varsayılan 0'dır, bu mesajların istemciye gönderilmeyeceğini belirtir. Bu seçenek yalnızca protokol sürüm 2 için geçerlidir.


1
Hatalıysa düzeltin, ancak makine ile aramda güvenlik duvarı yoksa (w / default configs), o zaman asla bağlantım kesilmeyecek mi? Güvenlik duvarımızın 60 dakika sonra boşta olan TCP bağlantılarını bıraktığını biliyorum, bu yüzden kapanan boşta bağlantıların gerçekleştiği yer burasıdır. Sadece OpenSSH'nin oturumları açıkça kapatıp kapatmadığını kontrol etmek istedim. Cevabın Hayır olduğunu düşünüyorum, openssh açıkça boşta bağlantıları kapatmıyor, ancak güvenlik duvarları normalde yapıyor. Cevabınızda belirtilen ayarlar aslında bağlantıyı sürdürmeye veya bağlantının düştüğünü görürse oturumu sonlandırmaya yardımcı olur.
Banjer

2
Alıntılanan metin, ClientAliveInterval için varsayılan değerin 0 olduğunu, bunun bir bağlantının açık kalacağı bir zaman aralığı tanımlayamadığı anlamına gelir. Yine de zaman aralığının varsayılan olarak sonlu bir değere sahip olduğunu biliyoruz. Bu nedenle , bağlantının varsayılan olarak ne kadar uzun süre açık kalacağını belirleyen başka bir parametre olması gerektiği görülmektedir . Yukarıdaki analizim doğruysa, hem sunucunun hem de istemcinin openssh çalıştıran linux makineler olduğunu ve her ikisinin de tüm varsayılanları kullandığını varsayalım. Bu durumda hangi taraf varsayılanı belirler, değeri nedir ve nerede ayarlanır?
Ben Crowell

2
@BenCrowell Ve yine de zaman aralığının varsayılan olarak sonlu bir değere sahip olduğunu biliyoruz. Hangi zaman aralığında ve bunu nasıl biliyorsunuz?
Piotr Dobrogost 13:17


6

OpenSSH, bir süre boşta kalan bir kabuk oturumunu sonlandırmayacak. Bu OpenSSH'in yaptığı bir şey değil. Boşta kalan bir kabuk oturumunun sonlandırılması, OpenSSH yapılandırmasıyla ilgili değildir.

Gösterdiğiniz ayarlar, bağlantı kesildiğinde zaman aşımına uğrar ve uzak ana bilgisayardaki kabukla ilgisizdir ve kullanıcının orada ne yaptığını veya ne yapmadığını gösterir.

Uzaktaki sunucunun kabuğu bir süre boşta kaldıktan sonra sona erebilir (veya başka bir işlem tarafından öldürülebilir), ancak bu, sunucudaki SSH hizmetinin ve SSH istemcinizin yapılandırmasıyla ilgili değildir.

İlgili:


sshdKonfigürasyondan çıkmak için "genişletilmiş test modunu" root olarak kullanın:

sshd -T

Bu belgelenmiştir kılavuzun (bakarak burada OpenBSD'deki):sshd(8)OpenSSH_7.7, LibreSSL 2.7.2

-T

Genişletilmiş test modu. Konfigürasyon dosyasının geçerliliğini kontrol edin , etkin konfigürasyonu stdout'a gönderin ve çıkın . İsteğe bağlı olarak, bir veya daha fazla -Cseçenek kullanılarak bağlantı parametreleri belirtilerek Eşleştirme kuralları uygulanabilir .

Bu seçenek sshd2008 yılında OpenSSH 5.1 / 5.1p1'e eklenmiştir .


3

Gereklilik, belirli bir süre kullanılmadığında SSH bağlantısını kapatmaksa, mermilerin kendileri zaman aşımı değişkenleri sağlar.

Bash için:

TMOUT: Sıfırdan büyük bir değere ayarlanırsa, TMOUT okuma yerleşik için varsayılan zaman aşımı olarak değerlendirilir. Seçim komutu, giriş bir terminalden geldiğinde TMOUT saniye sonra gelmezse, sona erer. Etkileşimli bir kabukta, değer, birincil bilgi istemi yayınlandıktan sonra giriş için beklenecek saniye sayısı olarak yorumlanır. Girdi gelmezse, Bash bu saniye sayısını bekledikten sonra sona erer.

Bunu çalıştırarak test edin TMOUT=10ve bağlantıyı kapatmak için 10 saniye bekleyin.

Tcsh için:

Autologout kabuk değişkeni, belirli bir süre kullanılmadığında kabuğun oturumu kapatması veya kilitlemesi için ayarlanabilir.

Tcsh'da, zaman aşımını on dakika ayarlamak için kullanılan sözdizimi şöyledir set autologout=10. Bu orijinal csh içinde çalışmıyor.


-2

Zaman aşımının herkes için 10 saniye olmasını istiyorsanız, server config (sshd_config) için aşağıdakini yapın:

ClientAliveInterval 10
ClientAliveCountMax 0

Yerel istemciler için zaman aşımının 10 saniye olmasını istiyorsanız, client config (ssh_config) için aşağıdakini yapın:

ServerAliveInterval 10
ServerAliveCountMax 0

AliveCountMax parametresi sıfır değilse, sunucu zamanlayıcıyı sıfırlamayı yanıtlayacağından muhtemelen çalışmaz (bir bağlantı sorunu yoksa). Bunu, ssh istemcisini hata ayıklama açıkken çalıştırarak görebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.