SSH सर्वर पर पोर्ट कैसे जारी करें जब एक रिवर्स ssh सुरंग अचानक / अशुद्ध रूप से डिस्कनेक्ट हो जाती है?


19

हमारे पास कुछ हार्डवेयर हैं जो हम अपने ग्राहकों के स्थानों पर स्थापित करते हैं, वह हार्डवेयर हमारे ssh सर्वर से जुड़ता है और एक रिवर्स ssh सुरंग स्थापित करता है ताकि हम निगरानी उद्देश्यों के लिए कई क्लाइंट सिस्टम तक पहुँच प्राप्त कर सकें।

SSH सत्र के अशुद्ध डिस्कनेक्ट होने तक सब कुछ ठीक काम करता है।

जब ऐसा होता है, तो हमारे SSH सर्वर पर रिवर्स सुरंग द्वारा उपयोग किए जाने वाले पोर्ट लिस्टेनिंग मोड में अटके रहते हैं और जब हमारा रिमोट हार्डवेयर अंततः ऑटो को फिर से कनेक्ट करने और अपने सुरंगों को फिर से स्थापित करने की कोशिश करता है तो यह त्रुटि के साथ विफल हो जाता है

चेतावनी: दूरस्थ पोर्ट फॉरवर्डिंग सुनो पोर्ट XXXX के लिए विफल

मैंने परीक्षण किया कि क्या हमारे एसएसएच सर्वर या क्लाइंट के साथ एक साफ डिस्कनेक्ट और पाठ्यक्रम की कोशिश करके एक समस्या थी जो बंदरगाहों को ठीक जारी करती है। जब मैं एक कनेक्शन विफलता का अनुकरण करता हूं (उदाहरण के लिए क्लाइंट हार्डवेयर के ईथरनेट पोर्ट को डिस्कनेक्ट करें) तो हमारे पास वही समस्या है जो मैंने ऊपर वर्णित की है।

इस स्थिति से निपटने का उचित तरीका क्या है? ध्यान रखें ये उलट सुरंग हैं इसलिए जो कुछ भी होता है वह एसएसएच सर्वर पर किया जाना चाहिए। आदर्श रूप से, मुझे तुरंत एसएसएल सत्र को महसूस करने के लिए ssh सर्वर की आवश्यकता है कि सुरंगों की मेजबानी करने वाला SSH नीचे है और इसके द्वारा उपयोग किए जा रहे पोर्ट को रिलीज़ करें। मुझे लगता है कि समाधान में संबंधित एसएसएच प्रक्रिया को मारना शामिल हो सकता है, लेकिन मुझे उस कारण से सावधान रहने की आवश्यकता है क्योंकि हमारे पास कई ग्राहक एक ही ssh सर्वर से जुड़ रहे हैं और मैं उन्हें ऑफ़लाइन किक नहीं करना चाहूंगा।

इतना परिपक्व होने के नाते, मुझे यकीन है कि SSHD के पास इसे संभालने के लिए किसी प्रकार की सुविधा है, लेकिन मैं अभी इसका पता नहीं लगा सकता।

कृपया सलाह दें ताकि मुझे विंडोज बॉक्स को वापस करने की आवश्यकता न पड़े ...

FYI करें: मैं इसे डेबियन आधारित डिस्ट्रो पर चला रहा हूं।

जवाबों:


18

आपको ClientAliveIntervalअपने में उपयोग करना है sshd_config

ClientAliveInterval 15

रेफरी: आदमी sshd_config

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

         The default value is 3.  If ClientAliveInterval (see below) is
         set to 15, and ClientAliveCountMax is left at the default,
         unresponsive SSH clients will be disconnected after approximately
         45 seconds.  This option applies to protocol version 2 only.

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

धन्यवाद क्लीमेंट। मैं हमारे सर्वर पर स्थापित करने पर गौर करूंगा।
TCZ

किया और परीक्षण किया, खूबसूरती से काम करता है। आपका बहुत बहुत धन्यवाद।
TCZ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.