SSH không lắng nghe sau khi khởi động lại: địa chỉ VPN đến muộn
Dịch vụ gắn với địa chỉ đường hầm cần địa chỉ đó tại thời điểm liên kết. Hãy kiểm tra chủ sở hữu của trình lắng nghe, thứ tự khởi động và lỗi liên kết trước khi chỉnh sửa khóa.
Bạn gắn SSH với địa chỉ đường hầm trong quá trình thiết lập, nó hoạt động, và sau lần khởi động lại tiếp theo không ai đăng nhập được cho đến khi có người khởi động lại dịch vụ bằng tay. Thông tin đăng nhập không phải vấn đề. Daemon đã hỏi kernel một địa chỉ chưa tồn tại, việc liên kết thất bại, và thông báo lướt qua trong nhật ký khởi động. Điều trông như vấn đề xác thực thực ra là vấn đề thứ tự khởi động.
Lỗi liên kết thực sự nói gì
Một socket lắng nghe phải được tạo trên địa chỉ tồn tại tại thời điểm đó. Khi giao diện VPN xuất hiện muộn hơn, một daemon được cấu hình chỉ liên kết với địa chỉ đường hầm không có gì để bám vào. Cấu hình vẫn hợp lệ về mặt cú pháp; môi trường đơn giản là chưa sẵn sàng. Một dịch vụ chạy từ lần khởi động thủ công không bao giờ đi qua đường khởi động, đó là lý do lỗi chỉ xuất hiện ở lần khởi động lại tiếp theo. So sánh dấu thời gian của lần liên kết thất bại với dấu thời gian của việc gán địa chỉ, và thứ tự trở nên rõ ràng.
Tính hợp lệ của cấu hình và mức sẵn sàng khi chạy là những thuộc tính riêng biệt. Hãy kiểm tra cả hai, vì một trong số chúng thất bại mà không nói gì.
Tiến trình nào sở hữu cổng
Daemon không phải lúc nào cũng là thành phần tạo ra trình lắng nghe. Kích hoạt socket chuyển trách nhiệm đó sang một unit, và khi đó khởi động lại daemon không thay đổi gì.
ss -ltnp 'sport = :22'
systemctl cat ssh.socketDanh sách socket cho thấy tiến trình nào giữ cổng và trên địa chỉ nào, trong khi bản kết xuất unit cho thấy có tồn tại unit socket hay không. Khi kích hoạt can thiệp, địa chỉ thuộc về unit socket và tệp daemon không có thẩm quyền. Hãy đọc nhật ký khởi động để tìm lỗi liên kết thật thay vì suy ra từ triệu chứng. Việc thiếu unit socket chỉ đơn giản có nghĩa là cách bố trí cổ điển, trong đó daemon liên kết trực tiếp.
Hãy làm mức sẵn sàng rõ ràng, không phải giấc ngủ
Độ trễ cố định là một phỏng đoán đối xử giống nhau với phần cứng nhanh và mạng chậm. Thay vào đó hãy diễn đạt sự phụ thuộc: chờ địa chỉ, rồi khởi động.
ip -4 addr show dev tun0
systemctl edit ssh.serviceThêm lệnh ExecStartPre lặp lại cho đến khi địa chỉ xuất hiện, hoặc sắp xếp unit sau mục tiêu mạng cụ thể sở hữu giao diện. Cả hai cách đều ghi lại sự phụ thuộc ở nơi quản trị viên tiếp theo có thể đọc. Vòng lặp cần thời gian chờ, nếu không một VPN thất bại sẽ để lại unit bị treo thay vì báo lỗi. Sau đó xác nhận rằng daemon liên kết địa chỉ đường hầm trong khi giao diện thông thường vẫn chịu sự quản lý của các quy tắc lọc của bạn.
Kiểm tra khởi động sạch và kết nối lại
Khởi động lại thủ công sau khi mọi thứ đã trực tuyến không chứng minh được gì về thứ tự khởi động. Khởi động lại máy với đường hầm được cấu hình tự động lên và quan sát xem trình lắng nghe có xuất hiện mà không cần can thiệp hay không.
systemctl status ssh.service
ss -ltnp 'sport = :22'Sau đó hạ và thiết lập lại đường hầm, vì việc kết nối lại có thể thay đổi địa chỉ và một liên kết được mã hóa cứng sẽ không theo kịp. Giữ một đường phục hồi ngoài băng trong khi kiểm tra, để một thay đổi thứ tự tồi không thể khóa bạn ra khỏi máy chủ.
Tiêu chí thành công là một trình lắng nghe xuất hiện theo sự phụ thuộc đã được ghi lại, không phải một cái mà ai đó nhớ ra để khởi động lại.