SSH içindeki ServerAliveCountMax


24

SSH'deki ServerAliveCountMax gerçekte ne yapar?

SSH üzerinden sunucuma bağlandığımda, kısa bir süre kullanılmadığında bağlantının kesilmesi yerine bağlantının uzun bir süre açık kalmasını sağlamaya çalışıyorum. Bu örnek

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 2

Bir kaynaktan duydum , yukarıdaki ayarın sunucuya her 60 saniyede bir sunucuya bu yanıtı aldığı sürece yanıt göndereceğini duydum . Ancak, hangi nedenle olursa olsun yanıt sunucuya iletilmezse, başka bir ileti göndermeye çalışır. Bu mesaj da başarısız olursa, bağlantıyı kapatır. (Bunun yanlış olduğunu hissediyorum)

Ancak ikinci ve üçüncü kaynak farklı bir şey söylüyor. Bir süre işlem yapılmazsa, sunucuya 60 saniyede bir mesaj gönderileceğini iddia ederler, ancak yalnızca 2 istek gönderir ve ardından bağlantıyı kapatır.

Peki tam olarak ne ServerAliveCountMax yapar?

Yanıtlar:


31

"Bu yanlış" olduğunu hissediyorsun doğru. Man sayfasına bakınız :

 ServerAliveCountMax
         Sets the number of server alive messages (see below) which may be
         sent without ssh(1) receiving any messages back from the server.
         If this threshold is reached while server alive messages are
         being sent, ssh will disconnect from the server, terminating the
         session.  It is important to note that the use of server alive
         messages is very different from TCPKeepAlive (below).  The server
         alive messages are sent through the encrypted channel and there‐
         fore will not be spoofable.  The TCP keepalive option enabled by
         TCPKeepAlive is spoofable.  The server alive mechanism is valu‐
         able when the client or server depend on knowing when a connec‐
         tion has become inactive.

         The default value is 3.  If, for example, ServerAliveInterval
         (see below) is set to 15 and ServerAliveCountMax is left at the
         default, if the server becomes unresponsive, ssh will disconnect
         after approximately 45 seconds.  This option applies to protocol
         version 2 only.

 ServerAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the server, ssh(1) will send a message through
         the encrypted channel to request a response from the server.  The
         default is 0, indicating that these messages will not be sent to
         the server.  This option applies to protocol version 2 only.

3
Kılavuz sayfası, devre dışı bırakılmak üzere Intervalayarlandı 0. Ama ayarladın Maxmı belli değil 0. Sonsuz canlı ping gönderir mi yoksa yok mu?
gcb

ServerAliveInterval 0 ayarının bağlantının süresiz olarak açık kalmaya devam edeceği açık değil
Francesco

1
@Francesco Varsayılan olarak bağlantı, bir uç açıkça kapatılmadıkça sonsuza kadar açık kalır.
Michael Hampton

5

Sunucu canlı mesajları, bir SSH sunucusu trafik olmayan bir süre sonra bağlantıları kapatmak üzere yapılandırıldığında yararlıdır (örneğin, SSH erişimi sunan paylaşılan web barındırma sağlayıcıları hemen hemen her zaman bunu yapar). Bu iki seçeneğin ayarlanması ServerAliveInterval, saniyede bir paket gönderir ve ServerAliveCountMaxbu da oturumu canlı tutar.

Her iki seçeneği de belirleme konusundaki belirsizlik hakkındaki yorumları yanıtlamak için uygulamanın 0kaynak kodunu okudum opensshve işte gördüğüm ...

  • Ayar ServerAliveIntervaliçin 0paket göndermek DEĞİL, ancak bağlantı nedeniyle, TCP zaman aşımı ve sunucu inaktif istemcileri düşmesi yapılandırılmamış demektir düştü olmadığını varsayarak canlı süresiz oturumu devam edecektir.

  • Ayar ServerAliveCountMaxiçin 0ayarlama aynı etkiye sahiptir ServerAliveIntervaliçin 0.

  • Değerin negatif veya negatif bir değere INT_MAX(yani 2,147,483,647) ayarlanması "tamsayı değeri ..." hatasına neden olur.

  • Ayar ServerAliveCountMaxarasındaki INT_MAX/1000+1(yani 2.147.484) INT_MAX(yani 2147483647) da ya değeri ayarı eşdeğer olacaktır 0.

Dolayısıyla, özünde, alabileceğiniz en fazla zaman aşımı süresi (hala paketleri gönderirken) INT_MAX/1000(yani 2,147,483). 1Seanslarda zaman aşımına uğrayan ve hiç trafik olmadığında, bu işlem sizi neredeyse 25 gün sürebilir.

Açıkçası, SSH'nin diğer uygulamaları farklı sonuçlara sahip olabilir.

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.