Vấn đềBạn cố gắng đăng nhập vào một máy chủ từ xa, nhưng thay vì lời nhắc nhập mật khẩu, bạn lại nhận được một thông báo dài. SSH từ chối kết nối vì khóa riêng tư (private key) của bạn quá "hở". Để bảo vệ thông tin đăng nhập, client OpenSSH đơn giản là bỏ qua khóa đó và chặn kết nối.
Permissions 0644 for '/home/user/.ssh/id_rsa' are too open.
Tại sao điều này xảy raSSH rất khắt khe về vấn đề bảo mật. Khóa riêng tư của bạn giống như một chiếc chìa khóa vạn năng vật lý cho ngôi nhà của bạn. Nếu quyền truy cập tệp của bạn cho phép những người dùng khác trên máy cục bộ đọc được nó, SSH sẽ coi như khóa đã bị lộ.
Trong lỗi trên, quyền truy cập là 0644. Dưới đây là ý nghĩa thực sự của những con số đó:
- 6 (Bạn): Có thể đọc và ghi tệp.- 4 (Nhóm): Các người dùng khác trong nhóm của bạn có thể đọc tệp.- 4 (Công cộng): Bất kỳ ai khác trên hệ thống đều có thể đọc tệp.Nếu bạn tải xuống tệp
.pemtừ AWS hoặc chuyển một khóa từ phân vùng Windows sang Linux, hệ thống thường mặc định các quyền truy cập rộng rãi này. SSH yêu cầu chỉ duy nhất bạn có quyền truy cập.
Giải pháp### 1. Kiểm tra quyền truy cập hiện tạiBắt đầu bằng cách xác minh trạng thái hiện tại của khóa. Chạy lệnh này trong terminal của bạn:
ls -l ~/.ssh/id_rsa
Nếu bạn thấy -rw-r--r--, điều đó có nghĩa là tệp có thể được đọc bởi tất cả mọi người. Chúng ta cần thắt chặt quyền đó lại.
2. Giới hạn quyền tệp khóaQuyền truy cập tiêu chuẩn cho khóa riêng tư là 600. Điều này cho phép bạn có toàn quyền truy cập nhưng khóa tất cả những người khác. Chạy lệnh sau:
chmod 600 ~/.ssh/id_rsa
Nếu khóa của bạn có tên khác, ví dụ deploy-key.pem, hãy đảm bảo sử dụng đúng tên tệp đó. Sau khi áp dụng, ls -l sẽ hiển thị -rw-------.
3. Bảo mật thư mục .sshĐôi khi tệp vẫn ổn, nhưng thư mục chứa nó lại quá mở. Thư mục ~/.ssh của bạn nên được thiết lập thành 700 (chỉ chủ sở hữu mới có quyền đọc/ghi/thực thi). Khắc phục bằng lệnh này:
chmod 700 ~/.ssh
4. Kiểm tra kết nốiThử kết nối lại:
ssh -i ~/.ssh/id_rsa user@192.168.1.100
Cảnh báo sẽ biến mất và bạn sẽ được yêu cầu nhập mật khẩu bảo vệ (passphrase) hoặc được đăng nhập ngay lập tức.
Trường hợp đặc biệt: Windows Subsystem for Linux (WSL)Bạn đang sử dụng WSL? Nếu khóa của bạn được lưu trữ trên ổ đĩa Windows (như /mnt/c/), lệnh chmod có thể thất bại trong im lặng. Điều này xảy ra vì các ổ đĩa Windows sử dụng hệ thống tệp khác (NTFS) không ánh xạ hoàn hảo với các quyền của Linux.
Cách khắc phục dễ nhất là di chuyển khóa vào thư mục home của Linux:
cp /mnt/c/Users/YourName/.ssh/id_rsa ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

