Cách chạy OpenConnect ở chế độ nền sau khi đăng nhập tương tác
Hoàn tất đăng nhập ở tiền cảnh rồi chuyển đường hầm cho chế độ nền của chính máy khách. Các kiểm tra giúp nó luôn tìm thấy và dừng được.
Bạn hoàn tất lời nhắc MFA, đường hầm dựng lên và việc đóng terminal kéo theo cả kết nối. Đây là vấn đề giám sát, không phải xác thực, và OpenConnect đã có sẵn công tắc giải quyết việc đó. Cách khắc phục là để máy khách tách vào nền sau khi khởi động xong, khi phần tương tác thực sự kết thúc. Sau đây là chuỗi kiểm tra: làm theo thứ tự và dừng ở mục đầu tiên không đúng với cổng của bạn.
Xác nhận cổng yêu cầu gì khi đăng nhập
Trước khi gõ lệnh, hãy ghi lại đường dẫn thông tin xác thực mà bản triển khai bắt buộc. Chỉ chứng chỉ, mật khẩu cộng token, và một vòng trình duyệt qua nhà cung cấp SAML hành xử khác nhau, và chế độ nền không thể bỏ qua bất kỳ cái nào. Tùy chọn này thay đổi điều xảy ra sau khi khởi động, không bao giờ thay đổi điều xảy ra trong lúc khởi động.
Cám dỗ là tự động hóa lời nhắc. Một lớp bọc gõ câu trả lời cố định khi nhận ra lời nhắc mật khẩu sẽ hỏng ngay khi cổng yêu cầu mã dùng một lần, và nó để thông tin xác thực trong tệp mà tài khoản khác đọc được. Nếu một người phải phê duyệt phiên, hãy giữ người đó trong quy trình.
Chạy phiên đầu tiên ở tiền cảnh và đọc đầu ra
Kết nối bình thường một lần và để toàn bộ quá trình bắt tay in ra. Ghi lại giao thức đang dùng, đường dẫn chứng chỉ hoặc token, địa chỉ đường hầm do máy chủ cấp và mọi cảnh báo trước khi kết nối được chấp nhận. Bản ghi đó là đường cơ sở của bạn và là cách rẻ nhất để sau này phân biệt sự cố máy khách với thay đổi ở cổng. Lưu nó ngoài bộ đệm terminal.
Sau đó lặp lại cùng lệnh gọi với chế độ nền và thêm tệp PID, ví dụ openconnect --background --pid-file /run/openconnect.pid vpn.example.net, giữ giao thức và các tùy chọn xác thực mà cổng yêu cầu trên cùng dòng. Sổ tay OpenConnect mô tả tùy chọn đó là tiếp tục ở nền sau khi khởi động hoàn tất, và chính vì vậy giai đoạn tương tác phải kết thúc trước.
Giúp tiến trình đang chạy luôn tìm thấy và dừng được
Tệp PID chỉ là bằng chứng khi còn khớp với một tiến trình sống. Đặt nó trong thư mục thuộc sở hữu của tài khoản dịch vụ và so số đã ghi với bảng tiến trình trước khi gửi tín hiệu. Khởi động lại và sự cố để lại tệp, và tệp cũ là lý do thường gặp khiến script dừng báo thành công trong khi đường hầm vẫn chạy. Coi việc kiểm tra là một phần của thủ tục dừng, không phải bước tùy chọn.
Gửi tín hiệu tới PID đã xác minh, rồi xác nhận giao diện đường hầm thực sự biến mất thay vì tin vào trạng thái thoát. Nếu máy khách cần quyền cao để cấu hình giao diện, tín hiệu phải đến từ tài khoản được phép gửi.
Đừng xếp chế độ nền dưới một trình giám sát
systemd và các trình giám sát tương tự mong sở hữu tiến trình mà chúng khởi chạy, nên máy khách tách ra khiến chúng bối rối. Trình giám sát thấy trình khởi chạy thoát trong khi kết nối thật vẫn sống, vì vậy logic khởi động lại, báo cáo trạng thái và thời gian chờ dừng đều mô tả điều không còn đúng. Viết unit theo cách bố trí tiền cảnh được hỗ trợ và để trình giám sát làm việc daemon.
Dành --background cho các phiên mà một người bắt đầu rồi bỏ đi. Nếu yêu cầu là đường hầm tồn tại trước khi ai đó đăng nhập, phần thiếu là danh tính không tương tác đã được phê duyệt cùng kế hoạch gia hạn, và không cờ dòng lệnh nào cung cấp cả hai. Thêm cờ vào script khởi động tạo ra đường hầm âm thầm thất bại khi thông tin xác thực đầu tiên hết hạn.
Coi cookie phiên là thông tin xác thực
OpenConnect ghi nhận một giai đoạn xác thực riêng qua --authenticate, và vật liệu tạo ra có thể trả lại bằng --cookie-on-stdin. Cặp đó dành cho công việc tích hợp, và thứ nó tạo ra nhạy cảm như mật khẩu đã tạo ra nó.
Giữ giá trị ngoài lịch sử shell, ngoài nhật ký và ngoài mọi phiếu bạn mở. Script bàn giao cũng phải bảo toàn thông tin điểm cuối đã xác minh mà máy khách nhận cùng cookie; nếu mất, lần chạy sau có thể kết nối tới máy chủ bạn chưa từng xác thực, tệ hơn một kết nối chỉ đơn giản thất bại.
Đi qua danh sách trước khi đóng terminal
Bốn điều phải đúng: đăng nhập tương tác đã kết thúc ở tiền cảnh, tệp PID trỏ tới tiến trình bạn đã xác minh, câu hỏi về trình giám sát đã được giải quyết theo hướng này hay hướng kia, và cookie có kế hoạch lưu trữ không phải tệp văn bản thuần. Khi cả bốn đúng, rời khỏi terminal là an toàn và đường hầm tiếp tục chạy.
Nếu một mục thất bại, hãy sửa mục đó trước khi động vào các mục khác, vì các kiểm tra còn lại không thể bù đắp. Giữ cả bản ghi tiền cảnh của lần chạy đầu tiên: lần tới khi đường hầm rơi không báo trước, chính đường cơ sở đó phân biệt thay đổi phía cổng với thay đổi phía máy khách.