Tạo và cấp quyền SSH key thay mật khẩu
Hướng dẫn Linux Server · cập nhật 30/07/2026
Để dùng khoá SSH thay mật khẩu, bạn tạo cặp khoá bằng ssh-keygen, chép khoá công khai lên VPS, rồi đăng nhập không cần gõ mật khẩu. Sau đó tắt đăng nhập bằng mật khẩu để chỉ khoá mới vào được. Việc này mất khoảng 15 phút.
Khoá SSH là một cặp gồm khoá riêng giữ trên máy bạn và khoá công khai đặt trên VPS. Chúng khớp nhau mới cho vào, nên không ai dò được như mật khẩu. Nhiều tài liệu bảo mật xem đây là cách đăng nhập SSH an toàn hơn hẳn dùng mật khẩu.
- Tạo cặp khoá trên máy của bạn.
- Chép khoá công khai lên VPS.
- Đăng nhập thử bằng khoá.
- Tắt đăng nhập bằng mật khẩu.
Khoá riêng và khoá công khai khác nhau ra sao
Cặp khoá SSH gồm hai file sinh ra cùng lúc. Khoá riêng nằm trên máy bạn và tuyệt đối không chia sẻ cho ai. Khoá công khai đặt trên VPS, ai xem cũng được. Khi kết nối, VPS dùng khoá công khai để thách đố, chỉ máy giữ khoá riêng đúng mới trả lời được, và được cho vào.
| Khoá | Đặt ở đâu | Chia sẻ được không |
|---|---|---|
Khoá riêng id_ed25519 | Máy của bạn | Không bao giờ |
Khoá công khai id_ed25519.pub | Trên VPS | Được, không hại gì |
Mất khoá riêng là mất chìa vào VPS, và nếu để lộ thì người khác vào được. Sao lưu khoá riêng ở nơi an toàn và đặt mật khẩu bảo vệ khoá khi ssh-keygen hỏi passphrase. Đừng gửi khoá riêng qua email hay chat.
Tạo cặp khoá bằng ssh-keygen
Trên máy Linux hoặc macOS, mở terminal và chạy ssh-keygen. Trên Windows, dùng PuTTYgen đi kèm PuTTY. Loại khoá nên chọn là ed25519 vì ngắn gọn và mạnh. Lệnh sẽ hỏi nơi lưu và passphrase, bạn có thể Enter để nhận mặc định hoặc đặt passphrase cho an toàn hơn.
ssh-keygen -t ed25519 -C "email-cua-ban"
Sau khi chạy xong, hai file xuất hiện trong thư mục ~/.ssh: id_ed25519 là khoá riêng và id_ed25519.pub là khoá công khai. Bạn chỉ cần chép file .pub lên VPS.
Chép khoá công khai lên VPS
Cách nhanh nhất là dùng lệnh ssh-copy-id. Nó tự chép khoá công khai vào đúng chỗ trên VPS và đặt quyền chuẩn. Lệnh này hỏi mật khẩu VPS lần cuối, sau đó bạn dùng khoá là xong. Nếu máy không có ssh-copy-id, bạn chép thủ công vào file authorized_keys.
ssh-copy-id [email protected]
Nếu VPS đã đổi cổng SSH, thêm cổng vào lệnh:
ssh-copy-id -p 2222 [email protected]
Đăng nhập thử bằng khoá trước khi tắt mật khẩu
Trước khi tắt đăng nhập bằng mật khẩu, phải chắc chắn khoá đã hoạt động. Mở một phiên SSH mới và đăng nhập. Nếu vào thẳng không hỏi mật khẩu VPS, hoặc chỉ hỏi passphrase của khoá, nghĩa là khoá đã đúng. Đừng bỏ qua bước kiểm tra này.
ssh [email protected]
Tắt đăng nhập bằng mật khẩu cho an toàn
Khi khoá đã vào được, bạn tắt đăng nhập bằng mật khẩu để chặn mọi lượt dò. Mở file /etc/ssh/sshd_config, đổi hai dòng liên quan, rồi khởi động lại SSH. Từ đó chỉ máy có khoá riêng đúng mới vào được, dù kẻ tấn công có đoán trúng mật khẩu cũng vô ích.
sudo nano /etc/ssh/sshd_config
Tìm và sửa hai dòng sau thành no:
PasswordAuthentication no
PermitRootLogin prohibit-password
sudo systemctl restart sshd
Chỉ tắt đăng nhập mật khẩu SAU khi đã đăng nhập được bằng khoá ở một phiên riêng. Giữ phiên SSH cũ mở trong lúc thử phiên mới. Tắt mật khẩu mà khoá chưa hoạt động là tự khoá mình ra ngoài, phải vào console để cứu.
Việc nên nhớ khi dùng nhiều máy
Nếu bạn quản trị từ nhiều máy tính, mỗi máy cần khoá riêng của nó, và bạn chép tất cả khoá công khai lên VPS. Đừng chép chung một khoá riêng qua nhiều máy. Khi cần thu hồi quyền của một máy, chỉ việc xoá dòng khoá công khai của máy đó trong file authorized_keys.
Khoá SSH kết hợp với đổi cổng và Fail2Ban tạo thành lớp bảo vệ vững cho VPS. Trong ba việc đó, dùng khoá là hiệu quả nhất, vì nó loại bỏ hoàn toàn rủi ro bị dò mật khẩu ngay từ gốc.
Bài khác trong Linux Server
Xem cả 22 bàiLàm theo vẫn chưa được?
Gửi yêu cầu hỗ trợ, kỹ thuật xem trực tiếp trên dịch vụ của Anh/Chị.