Theo dõi: Có vẻ như một loạt các ngắt kết nối nhanh chóng trùng hợp với một vài tháng chạy mỗi máy chủ có lẽ là ngẫu nhiên và chỉ phục vụ để tiết lộ vấn đề thực tế. Lý do nó không kết nối lại gần như chắc chắn là do các giá trị AliveInterval (câu trả lời của kasperd). Sử dụng tùy chọn ExitOnForwardFailure sẽ cho phép thời gian chờ xảy ra đúng trước khi kết nối lại, điều này sẽ giải quyết vấn đề trong hầu hết các trường hợp. Đề xuất của MadHatter (kịch bản giết) có lẽ là cách tốt nhất để đảm bảo rằng đường hầm có thể kết nối lại ngay cả khi mọi thứ khác không thành công.
Tôi có một máy chủ (A) phía sau tường lửa khởi tạo một đường hầm ngược trên một số cổng tới một VPS kỹ thuật số nhỏ (B) để tôi có thể kết nối với A qua địa chỉ IP của B. Đường hầm đã hoạt động ổn định trong khoảng 3 tháng, nhưng đột nhiên thất bại bốn lần trong 24 giờ qua. Điều tương tự cũng xảy ra một thời gian trước trên một nhà cung cấp VPS khác - nhiều tháng hoạt động hoàn hảo, sau đó đột nhiên xảy ra nhiều lỗi nhanh chóng.
Tôi có một tập lệnh trên máy A tự động thực hiện lệnh đường hầm ( ssh -R *:X:localhost:X address_of_B
cho mỗi cổng X) nhưng khi nó thực thi, nó nói Warning: remote port forwarding failed for listen port X
.
Đi vào sshd /var/log/secure
trên máy chủ cho thấy các lỗi sau:
bind: Address already in use
error: bind: Address already in use
error: channel_setup_fwd_listener: cannot listen to port: X
Việc giải quyết yêu cầu khởi động lại VPS. Cho đến lúc đó, tất cả các nỗ lực để kết nối lại đều đưa ra thông báo "chuyển tiếp cổng từ xa không thành công" và sẽ không hoạt động. Bây giờ đến lúc đường hầm chỉ kéo dài khoảng 4 giờ trước khi dừng lại.
Không có gì thay đổi trên VPS và nó là một máy sử dụng một lần, chỉ sử dụng làm điểm cuối đường hầm ngược. Nó đang chạy OpenSSH_5.3p1 trên CentOS 6.5. Có vẻ như sshd không đóng các cổng khi kết nối bị mất. Tôi không thể giải thích được tại sao, hoặc tại sao nó lại đột nhiên xảy ra sau nhiều tháng hoạt động gần như hoàn hảo.
Để làm rõ, trước tiên tôi cần tìm hiểu tại sao sshd từ chối nghe trên các cổng sau khi đường hầm thất bại, điều này dường như là do sshd để các cổng mở và không bao giờ đóng chúng. Đó dường như là vấn đề chính. Tôi chỉ không chắc điều gì sẽ khiến nó hoạt động theo cách này sau nhiều tháng hành xử như tôi mong đợi (tức là đóng các cổng ngay lập tức và cho phép tập lệnh kết nối lại).