Giải quyết lỗi quyền truy cập SSH ngay trong ứng dụng của bạn
Những người mới sử dụng SSH thường gặp phải trở ngại. Họ thấy lỗi này:
WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'id_rsa.pem' are too open.
Cách khắc phục là một câu lệnh terminal đơn giản: chmod 600 id_rsa.pem. Đối với các kỹ sư, việc này rất dễ dàng. Nhưng đối với nhân viên agency hoặc nhân viên vận hành IT không sử dụng terminal, đây là một rào cản lớn. Nó dẫn đến việc phải gửi yêu cầu hỗ trợ liên tục.
Chúng tôi quyết định giải quyết vấn đề này ngay bên trong ứng dụng của mình. Chúng tôi đã xây dựng một hệ thống để tự động chẩn đoán và sửa lỗi quyền truy cập.
Vấn đề OpenSSH từ chối tải khóa riêng (private key) nếu quyền truy cập quá lỏng lẻo. Nếu người khác có thể đọc được khóa của bạn, tính bảo mật sẽ không còn. Hầu hết các khóa mặc định là 0644, cho phép mọi người đều có thể đọc được. OpenSSH yêu cầu 0600.
Giải pháp của chúng tôi Chúng tôi sử dụng phương pháp tiếp cận hai giai đoạn để xử lý vấn đề này.
Phase 1: Post-failure recovery Nếu kết nối thất bại do vấn đề về quyền truy cập, giao diện người dùng sẽ hiển thị nút "Fix and retry". Khi nhấp vào đó, hệ thống sẽ thực hiện sửa lỗi và thử kết nối lại.
Phase 2: Pre-connection prevention Ứng dụng sẽ kiểm tra đường dẫn khóa trước khi người dùng nhấn kết nối. Nếu quyền truy cập không đúng, chúng tôi sẽ hiển thị một cảnh báo. Người dùng có thể chọn sửa lỗi hoặc tiếp tục kết nối như hiện tại.
Chúng tôi cũng xử lý Windows theo cách khác. Windows sử dụng ACL thay vì quyền Unix. Mã nguồn của chúng tôi sẽ phát hiện nền tảng và chạy lệnh chính xác, chẳng hạn như icacls, để sửa lỗi truy cập.
Tại sao chúng tôi không tự động sửa lỗi một cách âm thầm Chúng tôi đã cân nhắc việc tự động sửa các khóa khi khởi động. Tuy nhiên, chúng tôi đã bác bỏ ý tưởng này. Một số quy trình làm việc yêu cầu các quyền cụ thể cho các khóa dùng chung. Nếu chúng tôi thay đổi chúng mà không hỏi ý kiến, chúng tôi sẽ làm gián đoạn quy trình làm việc của người dùng.
Quy tắc của chúng tôi rất đơn giản: Chúng tôi chẩn đoán mọi thứ, nhưng chỉ sửa đổi tệp khi người dùng nhấn nút.
Kết quả Việc xây dựng UX giúp xử lý các rào cản kỹ thuật sẽ giúp giảm khối lượng yêu cầu hỗ trợ. Chúng tôi chỉ cho người dùng thấy điều gì đang sai và cung cấp giải pháp sửa lỗi chỉ với một cú nhấp chuột. Điều này loại bỏ rào cản tâm lý khi phải sử dụng terminal.