Gần đây tôi thường sử dụng tính năng ControlMaster của máy khách SSH, cho phép tôi sử dụng một kết nối SSH-TCP duy nhất cho nhiều hệ vỏ và chuyển tiếp cổng tới cùng một hệ thống từ xa. Điều khó chịu nhất về điều này là, quá trình của lớp vỏ đầu tiên được mở sẽ tự động trở thành ControlMaster. Điều đó có nghĩa là, nếu quá trình này bị chấm dứt, tất cả các shell và chuyển tiếp cổng khác sử dụng kết nối chính điều khiển sẽ không khả dụng.
Tôi thực sự muốn khi lệnh ssh đầu tiên đến một hệ thống từ xa sẽ sinh ra một quá trình nền bổ sung giữ kết nối miễn là vẫn có các kết nối sử dụng kết nối ControlMaster, vì vậy tôi có thể chỉ cần đóng các shell thực sự mà không gặp sự cố nào khác. kết nối. Lý tưởng nhất là quá trình ControlMaster nền thậm chí có thể được cấu hình để chờ một khoảng thời gian để các shell mới hoặc chuyển tiếp cổng sử dụng ControlMaster trước khi tắt.
Có cách nào để làm cho khách hàng ssh làm điều đó không? Tôi biết tôi có thể tạo một kết nối như vậy bằng tay trước khi sử dụng ssh để tạo shell đầu tiên, nhưng tôi rõ ràng muốn điều này tự động xảy ra bởi vì nếu không tôi chắc chắn sẽ quên làm điều đó mọi lúc mọi nơi.
Để tập lệnh trình bao bọc thực hiện cũng sẽ không dễ dàng vì tôi thường sử dụng các tốc ký được cấu hình cho tên máy chủ từ xa trong .ssh / config và ổ cắm ControlMaster được tạo bằng tên USERNAME @ NETWORK_NAME: NETWORK_PORT làm tên. Vì vậy, một trình bao bọc sẽ cần phải hiểu .config / ssh hoàn hảo để hoạt động như dự định.