Khóa SSH (secure shell) được dùng trong giao thức SSH để xác thực phiên và thiết lập kết nối giữa máy local và SSH server. Trong luồng bình thường, cách tốt nhất thiết lập server này là dùng khóa công khai, một khi kết nối server được thiết lập SSH loại bỏ yêu cầu mật khẩu mỗi lần đăng nhập và tự động thiết lập kết nối với server đó.
Tuy nhiên, khi dùng khóa công khai đôi khi yêu cầu kết nối của SSH Client bị Server từ chối, gây lỗi SSH permission denied.
Bài viết này sẽ demo các giải pháp khác nhau khắc phục lỗi "SSH Permission denied", nhưng trước đó hãy xem nguyên nhân lỗi.
Có vài nguyên nhân gây lỗi này. Một nguyên nhân phổ biến nhất là xác thực mật khẩu bị tắt trên SSH Server.
Nguyên nhân phổ biến khác là không có quyền truy cập thư mục "ssh" về cơ bản nghĩa là truy cập Authorized_keys bị vô hiệu hóa.
Giải Pháp 1: Cho Phép Xác Thực Mật Khẩu Trên SSH Server
Như đã nói, nếu server không bật kết nối SSH với xác thực mật khẩu, kết nối sẽ nhiều khả năng thất bại.
- Để tránh điều này, vào SSH Server, từ PC/Server đó, mở file cấu hình bằng lệnh:
sudo nano /etc/ssh/sshd_config
Lệnh cấu hình này sẽ mở trong terminal:
SSH configuration file
- Trong file cấu hình, tìm dòng "Password Authentication", và "bỏ comment" dòng bằng cách bỏ dấu "#" ở đầu: Locate PasswordAuthentication Activate PasswordAuthentication
- Khi xong, lưu và thoát file cấu hình bằng "CTRL + O" rồi "CTRL + X". Bước tiếp theo khởi động lại dịch vụ SSH bằng lệnh:
sudo systemctl restart sshd
Restarting SSH service - Khi xong, kết nối lại SSH server từ client để có kết quả: SSH server connected
Bạn đã khắc phục thành công lỗi và kết nối SSH server.
Giải Pháp 2: Bật Xác Thực Khóa Công Khai
Đôi khi user gặp biến thể của lỗi mà trạng thái lỗi thành "SSH Permission Denied (public key)" lỗi này do không bật xác thực công khai trên SSH server.
- Đối với trường hợp này, vào PC SSH Server, mở file cấu hình bằng lệnh:
sudo nano /etc/ssh/sshd_config
Trong file cấu hình, đơn giản tắt root login và bật "PublicKeyAuthentication":
Configure RootLogin and PubkeyAuthentication
- Sau đó, đảm bảo tùy chọn UsePAM cũng được bật trong file cấu hình: Enable UsePAM configuration
- Lại lưu và thoát file dùng "CTRL + O" rồi "CTRL + X" và khởi động lại dịch vụ SSH:
sudo systemctl restart sshd
- Khi xong, thử kết nối lại để có kết quả:
Successful SSH server connection
Bạn đã khắc phục lỗi SSH Permission Denied (Public Key).
Giải Pháp 3: Cho Phép Quyền Thư Mục SSH
Thường khóa công khai được lưu trong thư mục con authorized_keys bên trong thư mục "ssh" và nếu quyền của thư mục con này hoặc toàn bộ thư mục không đúng, kết nối SSH sẽ trả về lỗi.
- Trong trường hợp này, đơn giản thay đổi quyền thư mục "authorized_keys" bằng lệnh:
sudo chmod 600 ~/.ssh/authorized_keys
Lệnh này cho phép quyền đọc và ghi cho authorized keys.
- Sau đó cấp quyền thực thi cho thư mục cha bằng lệnh:
sudo chmod 700 ~/.ssh
Sau chạy các lệnh này, thử kết nối SSH với SSH server để có kết quả:
Connected to SSH server
Kết quả cho thấy lỗi đã được khắc phục.
Sửa Lỗi Bổ Sung Cho SSH Permission Denied
Lỗi "Permission Denied" có thể xảy ra khi mật khẩu SSH Server không đúng. Lỗi đánh máy chủ yếu gây ra, hoặc đôi khi server đổi mật khẩu mà client không hay. Trong trường hợp này, khi user cung cấp mật khẩu cho kết nối SSH, lỗi sau hiển thị trên terminal:
Retry password "wrong password entered"
Trong trường hợp này, liên hệ hỗ trợ SSH Server hỏi họ có đổi pass không hoặc kiểm tra lại xem bạn có gõ sai không. Sau đó, bạn sẽ suy ra lỗi và kết nối SSH Server:
The SSH server is running
SSH Permission Denied không mới và chủ yếu do không bật xác thực mật khẩu, không bật xác thực khóa công khai, và sai quyền thư mục "ssh" hoặc "authroized_keys". Hướng dẫn đã chi tiết các giải pháp khắc phục lỗi và tiến hành kết nối. Thêm vào đó, lỗi này cũng do server đổi mật khẩu hoặc gõ sai. Trong trường hợp này, tốt nhất liên hệ hỗ trợ SSH Server hoặc gõ lại mật khẩu đảm bảo không sai.
VỀ TÁC GIẢ

Muhammad Zubyan
Muhammad Zubyan là chuyên gia Google IT Support Professional chứng chỉ với hơn 7 năm kinh nghiệm rộng rãi. Anh đã làm việc trên hơn 1500 máy tính, tích lũy kiến thức quý giá cho phép phát hiện và xử lý bất kỳ nguyên nhân gốc rối phức tạp nào của các vấn đề và lỗi liên quan đến Windows. Ngoài việc quản lý Appuals với vai trò Senior Editor, anh hiện đang phát triển chương trình Game Optimization riêng phục vụ cả game thủ và người dùng phổ thông.