Vì sao dịch vụ VPN khởi động cùng hệ thống không đọc được vòng khóa của bạn
VPN lúc khởi động không có đại lý bí mật nào đã mở khóa để vay mượn. Hãy đọc cờ bí mật của kết nối trước khi đặt lại mật khẩu mà máy chủ chưa từng từ chối.
Một kết nối hoạt động sau khi đăng nhập và thất bại trước đó thường có nghĩa là lần thử lúc khởi động không lấy được bí mật, chứ không phải máy chủ đã từ chối một bí mật. Thông tin đăng nhập tồn tại; ngữ cảnh yêu cầu nó thì không. Chính sự phân biệt đó tiết kiệm một lần đặt lại mật khẩu không cần thiết.
Hãy theo dõi yêu cầu: có thứ gì đó khởi động kết nối trước khi phiên máy tính để bàn tồn tại, và kho bí mật thường trả lời vẫn chưa được mở khóa. Hai ngữ cảnh không thống nhất về việc ai sở hữu bí mật, và hồ sơ ghi lại bên nào được kỳ vọng cung cấp nó.
Đường khởi động thực sự yêu cầu điều gì
Khi khởi động, NetworkManager khởi chạy như một dịch vụ hệ thống không có phiên người dùng, không có D-Bus phiên và không có vòng khóa đã mở. Hồ sơ kết nối vẫn có thể được nâng lên, nhưng chỉ với những bí mật mà dịch vụ tự tiếp cận được. Bất cứ thứ gì thuộc sở hữu của đại lý bí mật đều chờ cho đến khi có người đăng nhập và đại lý xuất hiện. Dịch vụ đang làm đúng những gì cấu hình của nó nói; hồ sơ mới là thứ phải thay đổi.
Lỗi được ghi vào chính kết nối chứ không bị giấu trong vòng khóa.
Đọc các cờ bí mật trên một kết nối
Hãy hỏi kết nối xem nó mong đợi điều gì, không phải máy tính để bàn nhớ gì. Cột cờ trả lời trực tiếp câu hỏi, và nó tồn tại qua các lần khởi động lại trong tệp hồ sơ trên đĩa.
Bắt đầu bằng danh sách hồ sơ, sau đó xác nhận kết nối nào được đặt để tự nâng lên. Tiếp theo xuất một kết nối và đọc các cờ mật khẩu:
nmcli -f NAME,UUID,TYPE,AUTOCONNECT connection show nmcli connection show "Work VPN" | grep -i -E "password|secret|key" journalctl -b -u NetworkManager --grep "secret"
Lệnh đầu tiên xác nhận những hồ sơ nào tồn tại và liệu một hồ sơ có được đặt tự động kết nối hay không, đó chính là cách một lần thử không có giám sát bắt đầu. Lệnh thứ hai phơi bày các giá trị cờ, và lệnh thứ ba cho thấy dịch vụ phàn nàn rằng không có đại lý nào trả lời cho một bí mật nhất định. Một dòng nhật ký gọi bí mật là do đại lý sở hữu chính là toàn bộ chẩn đoán trong một câu.
| Flag value | Where the secret lives | Behaviour before login |
|---|---|---|
| 0 | Stored in the connection profile | Available to the system service |
| 1 | Owned by a secret agent | Blocks until the agent is unlocked |
| 2 | Never stored | Prompts on every activation |
| 4 | Not required | Never requested at all |
Vì sao chuyển kết nối sang phạm vi hệ thống lại thay đổi câu trả lời
Một kết nối thuộc sở hữu người dùng được kích hoạt dưới đại lý của người dùng đó, vì thế nó hoạt động hoàn hảo ngay khi máy tính để bàn khởi động xong. Chuyển nó sang phạm vi hệ thống sẽ loại đại lý khỏi đường đi, nên cùng một hồ sơ lại hành xử khác đi mà không thay đổi một dòng cấu hình VPN nào.
Việc chuyển đó là một thiết kế hợp lý, và nó mang theo một yêu cầu: bí mật phải tiếp cận được bởi dịch vụ hệ thống. Lưu nó trong hồ sơ, cung cấp nó qua thông tin đăng nhập phạm vi hệ thống, hoặc chấp nhận một lời nhắc tương tác vào đúng thời điểm đều là những câu trả lời hợp lệ. Để cờ 1 đó và hy vọng thì không.
Một khóa riêng có cụm mật khẩu riêng sẽ thêm một lớp thứ hai. Ngay cả mật khẩu tài khoản đã lưu cũng không mở được khóa đòi cụm mật khẩu, nên hãy xác minh bước đang thất bại thực sự yêu cầu bí mật nào trước khi thay đổi bất cứ điều gì.
Không nên làm gì và nên làm gì thay vào đó
Làm cho mọi tệp thông tin đăng nhập ai cũng đọc được, hoặc tắt xác thực để không cần lời nhắc, là đánh đổi một bất tiện lúc khởi động lấy một sự phơi bày vĩnh viễn. Cả hai cũng che giấu sự phụ thuộc thay vì giải quyết nó, và lần cập nhật ảnh tiếp theo sẽ đưa lỗi đó trở lại.
Ở giai đoạn đó hãy dùng cơ chế mà bản phân phối của bạn ghi nhận cho việc kích hoạt không có giám sát, sau đó xác nhận rằng các cờ của hồ sơ khớp với nó. Kiểm tra kết quả từ một lần khởi động sạch, không phải từ một shell đã có đại lý. Ghi lại chủ sở hữu kết nối, nguồn của bí mật và giai đoạn phải hoạt động, để một thay đổi tự khởi động về sau không thể âm thầm đưa trở lại sự phụ thuộc vào việc ai đó mở khóa máy tính để bàn trước. Tài liệu hóa chính là khác biệt giữa một dịch vụ đã sửa và một dịch vụ lại hỏng vào quý sau.
Hãy thử từ một lần khởi động sạch có kiểm soát, không phải từ một lần thử lại thủ công sau khi đăng nhập. Lần thử lại thành công vì đúng lý do khiến lần thử lúc khởi động thất bại, và đó chính là bằng chứng mà một bài kiểm tra nhanh phá hủy.