Làm cách nào để giải phóng các cổng trên máy chủ SSH khi đường hầm ssh ngược bị ngắt kết nối đột ngột / không sạch?


19

Chúng tôi có một số phần cứng chúng tôi cài đặt tại các địa điểm của khách hàng, phần cứng đó kết nối với máy chủ ssh của chúng tôi và thiết lập một đường hầm ssh ngược để chúng tôi có thể truy cập vào một số hệ thống máy khách cho mục đích giám sát.

Mọi thứ hoạt động tốt cho đến khi có một sự ngắt kết nối ô uế của phiên SSH.

Khi điều đó xảy ra, trên máy chủ SSH của chúng tôi, các cổng được sử dụng bởi đường hầm ngược bị kẹt trong chế độ LISTENING và khi phần cứng từ xa của chúng tôi cuối cùng cố gắng tự động kết nối lại và thiết lập lại đường hầm của nó, nó đã bị lỗi

Cảnh báo: chuyển tiếp cổng từ xa không thành công cho cổng nghe XXXX

Tôi đã kiểm tra xem có vấn đề gì với máy chủ SSH hoặc máy khách của chúng tôi hay không bằng cách thử ngắt kết nối sạch và khóa học sẽ giải phóng các cổng tốt. Khi tôi mô phỏng lỗi kết nối (ví dụ ngắt kết nối cổng Ethernet của phần cứng máy khách) thì chúng tôi có cùng một vấn đề tôi đã mô tả ở trên.

Cách thích hợp để xử lý tình huống này là gì? Hãy nhớ rằng đây là những đường hầm đảo ngược, vì vậy bất cứ điều gì xảy ra cần phải được thực hiện trên máy chủ SSH. Lý tưởng nhất là tôi cần máy chủ ssh để nhận ra ngay lập tức rằng phiên SSH lưu trữ các đường hầm bị hỏng và giải phóng các cổng mà nó đang sử dụng. Tôi đoán giải pháp có thể liên quan đến việc giết quá trình SSH có liên quan nhưng tôi cần cẩn thận với lý do đó vì chúng tôi có nhiều máy khách kết nối với cùng một máy chủ ssh và tôi sẽ không muốn đá chúng ngoại tuyến.

Quá chín chắn, tôi chắc chắn SSHD có một số tính năng tích hợp để xử lý việc này nhưng tôi không thể tìm ra.

Xin vui lòng tư vấn để tôi không phải quay lại quản lý các hộp Windows ...

FYI: Tôi đang chạy cái này trên một bản phân phối dựa trên Debian.

Câu trả lời:


18

Bạn phải sử dụng ClientAliveIntervaltrong của bạn sshd_config.

ClientAliveInterval 15

Tham chiếu: người đàn ông 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.

Cảm ơn bạn Clement. Tôi sẽ xem xét việc thiết lập nó trên máy chủ của chúng tôi.
TCZ

Thực hiện và thử nghiệm, hoạt động đẹp. Cảm ơn rât nhiều.
TCZ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.