Hết thời gian chờ Linux SSH [đã đóng]


10

Tôi đã vật lộn với một vài hệ thống hết thời gian sau X phút không hoạt động và không biết cách khắc phục.

Tôi có một hộp CentOS tại văn phòng của tôi. Kết nối với SSH không thể chạm vào nó trong 2 giờ và nó vẫn hoạt động khi tôi chạy một cái gì đó.

Tuy nhiên, kết nối với cùng một hộp ở nhà, và đôi khi nó sẽ hết thời gian sau vài giây đôi khi sau vài phút.

Tôi sẽ nghĩ đó là kết nối internet của mình, tuy nhiên nếu tôi chủ động sử dụng hộp thì nó sẽ vẫn kết nối.

Tuy nhiên nếu tôi dừng gõ vào google một cái gì đó, nó sẽ hiển thị một thông báo bị ngắt kết nối và tôi phải kết nối lại.

Bất cứ điều gì tôi có thể kiểm tra để xem những gì đang xảy ra?


4
Các tài liệu cho khách hàng (chưa được đặt tên) của bạn.
user9517

Câu trả lời:


14

Điều đầu tiên bạn nên xem xét là thiết lập ServerAliveInterval. Điều này nên được đặt trên máy trạm của bạn.

Trên máy khách Linux hoặc OSX, bạn có thể tạo tệp cấu hình cho người dùng của mình dưới ~ / .ssh / config trên máy trạm của bạn. Thêm chỉ thị sau. Trong trường hợp của tôi, tôi muốn nó ảnh hưởng đến tất cả các máy chủ vì vậy tôi đặt nó dưới Máy chủ *.

Host *
    ServerAliveInterval 60

Điều này sẽ gửi một hướng dẫn noop cứ sau 60 giây để giữ kết nối mở. Bạn có thể muốn điều chỉnh giá trị để đáp ứng nhu cầu của bạn.

Về phía máy chủ, đảm bảo TCPKeepAlive được đặt thành có.

grep TCPKeepAlive /etc/ssh/sshd_config
TCPKeepAlive yes

Nếu bạn đang ở trên Windows, bạn sẽ cần tham khảo tài liệu cho khách hàng của mình.


11

Linux không hết thời gian kết nối SSH nhàn rỗi. Bạn có thể để kết nối SSH mở vô thời hạn và miễn là không có điểm cuối nào được khởi động lại hoặc có địa chỉ IP mới, kết nối sẽ vẫn hoạt động khi bạn truy cập sau một thời gian dài.

Tuy nhiên, nếu có bất kỳ hộp trung gian trạng thái nào (NAT, tường lửa, v.v.) có khả năng hết thời gian kết nối nhàn rỗi. Kết quả của điều đó là mặc dù kết nối còn sống ở cả hai đầu, hai điểm cuối không thể giao tiếp được nữa vì hộp giữa không từ chối chuyển tiếp bất kỳ gói tin nào cho đến khi máy khách SSH mở kết nối mới.

Nếu bạn biết thời gian chờ của middlebox, bạn có thể làm việc xung quanh vấn đề bằng cách cấu hình ClientAliveIntervaltrong /etc/ssh/sshd_configtrên máy chủ hoặc ServerAliveInterval~/.ssh/configtrên máy khách. Để phát hiện tối ưu các kết nối bị hỏng, nên bật cả hai cài đặt. Điều này cũng sẽ phát hiện các kết nối bị hỏng khi một trong hai điểm cuối đã được khởi động lại hoặc đã nhận được một địa chỉ IP mới.

Vì bạn chỉ ra rằng thời gian chờ đôi khi dường như thấp đến vài giây, điều này có thể không đủ để giải quyết vấn đề của bạn. Thời gian chờ rõ ràng rất thấp có thể do CGN bị quá tải hoặc bị định cấu hình sai. Bạn cần kiểm tra lưu lượng tại các điểm khác nhau của đường dẫn liên lạc để tìm hiểu xem CGN có chịu trách nhiệm cho các lỗi không.

Nếu hóa ra lỗi là do ISP của bạn làm điều gì đó ngớ ngẩn, chẳng hạn như kết nối cân bằng tải trên nhiều CGN không chia sẻ trạng thái kết nối, bạn không thể tự khắc phục sự cố bằng cách điều chỉnh cấu hình SSH của mình.

Nếu bạn tình cờ bị mắc kẹt với ISP có CGN không đáng tin cậy mà họ từ chối sửa, thì các tùy chọn duy nhất tôi biết là nâng cấp cả máy khách và máy chủ lên phiên bản kernel có hỗ trợ MPTCP hoặc sử dụng giải pháp đường hầm được thiết kế để tự chịu đựng thay đổi trong ánh xạ cổng trên NAT.

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.