SSH Key là một phương thức xác thực giúp chúng ta đăng nhập nhanh chóng vào VPS hay Server một cách an toàn, bạn sẽ dễ quản lý và tiết kiệm thời gian hơn so với việc dùng mật khẩu như thông thường.
Trước đây, khi chưa tìm hiểu về SSH Key mình vẫn sử dụng cách login VPS thông thường, khá tốn thời gian vì phải mở file quản lý và tìm IP + Website + Mật khẩu.
Kể từ khi nắm được sự tiện lợi và sự bảo mật của SSH Key – các trang web đang quản lý thông qua VPS đều login thông qua cách này.
Khi sử dụng SSH Key, hệ thống sẽ dùng một cặp khóa gồm:
Public Key
Private Key
Trong đó:
- Public Key: Khóa công khai, dùng để thêm vào VPS hoặc tài khoản nhà cung cấp VPS.
- Private Key: Khóa riêng tư, lưu trên máy tính cá nhân và không được chia sẻ cho ai.
Khi bạn login VPS, máy chủ sẽ kiểm tra xem Private Key trên máy tính của bạn có khớp với Public Key đã được thêm vào VPS hay không. Nếu khớp, bạn sẽ đăng nhập thành công mà không cần nhập password root.
DigitalOcean cũng khuyến nghị sử dụng SSH key để login vào VPS vì nó bảo mật hơn password và giúp đăng nhập vào VPS/Server nhanh chóng mà không cần nhập hoặc dán mật khẩu vào Termial.
Nên dùng SSH Key hay Password?
Bảng so sánh nhanh:
| Phương thức | Ưu điểm | Nhược điểm |
|---|---|---|
| Password | Dễ dùng, phù hợp người mới | Kém an toàn hơn, dễ bị brute-force |
| SSH Key | Bảo mật cao, phù hợp với những người quản trị nhiều VPS ở nhiều nhà cung cấp khác nhau. | Cần tạo và lưu private key cẩn thận, đặc biệt là khi cài lại máy tính. |
| SSH Key + Passphrase | An toàn hơn nếu có thêm mật khẩu. | Mỗi lần dùng key có thể cần nhập mật khẩu đã đặt cho passphrase |
Khuyến nghị:
- Vọc vạch VPS để học và trải nghiệm: Có thể dùng password nếu cần đơn giản.
- Dùng VPS chạy website chính và quan trọng: Nên dùng SSH Key, tắt password login và hạn chế đăng nhập root trực tiếp.
Cần chuẩn bị gì trước khi tạo SSH Key?
- Nếu dùng Linux hoặc macOS, hệ thống thường đã có sẵn OpenSSH.
- Nếu dùng Windows 10 hoặc Windows 11, bạn có thể dùng PowerShell, Windows Terminal hoặc PuTTY.
Cách tạo SSH Key trên Linux, macOS và Windows
Nếu bạn sử dụng cá nhân, chỉ cần tạo một SSH Key là đủ.
Tuy nhiên, nếu đang quản lý nhiều trang web ở nhiều nhà cung cấp khác nhau – hãy tạo key riêng cho từng trang hoặc theo nhà cung cấp để dễ dàng quản lý về sau.
Lưu ý: Đây là hướng dẫn thêm, bạn cần xem trước phần dành cho cá nhân để nắm rõ các bước.
Cách tạo key riêng cho từng nhà cung cấp, hãy dùng tên riêng.
ssh-keygen -t ed25519 -C "digitalocean" -f ~/.ssh/do_ed25519
ssh-keygen -t ed25519 -C "vultr" -f ~/.ssh/vultr_ed25519
ssh-keygen -t ed25519 -C "linode" -f ~/.ssh/linode_ed25519
Sau đó copy public key tương ứng:
cat ~/.ssh/do_ed25519.pub
cat ~/.ssh/vultr_ed25519.pub
cat ~/.ssh/linode_ed25519.pub
Chúng ta sẽ cần nội dung của file.pub trên máy tính để dán vào ô nhấp SSH Key content của các nhà cung cấp. Chúng thường có dạng như sau:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxx

Login bằng từng key riêng
DigitalOcean:
ssh -i ~/.ssh/do_ed25519 root@IPVPS
Vultr:
ssh -i ~/.ssh/vultr_ed25519 root@IPVPS
Linode:
ssh -i ~/.ssh/linode_ed25519 root@IPVPS
Cách quản lý gọn bằng file ~/.ssh/config
Bạn có thể tạo file config:
nano ~/.ssh/config
Thêm nội dung:
Host do-vps
HostName 123.123.123.123
User root
IdentityFile ~/.ssh/do_ed25519
Host vultr-vps
HostName 234.234.234.234
User root
IdentityFile ~/.ssh/vultr_ed25519
Host linode-vps
HostName 345.345.345.345
User root
IdentityFile ~/.ssh/linode_ed25519
Sau đó login rất gọn:
ssh do-vps
ssh vultr-vps
ssh linode-vps
Việc sử dụng ~/.ssh/config sẽ giúp bạn nhanh chóng login vào VPS cần thao tác như vậy sẽ không cần mất thời gian mở file quản lý VPS lên và xem địa chỉ IP,…

Chỉ cần nhập ssh do-vps hoặc ssh vps-damme là có thẻ login vào. Rất tiện lợi!

Bước 1: Mở Terminal hoặc PowerShell
Trên macOS hoặc Linux, bạn mở Terminal, còn trên Windows, bạn mở PowerShell hoặc Windows Terminal.
Bước 2: Tạo SSH Key
Nhập lệnh sau:
ssh-keygen
Sau khi chạy lệnh, hệ thống sẽ hỏi nơi lưu key:

Enter file in which to save the key:
Bạn nên đặt tên mới như (do_ed25519, damme_ed25519) hoặc có thể nhấn Enter để lưu với tên theo mặc định là d_ed25519.
Thông thường, SSH Key sẽ được lưu tại:
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
Trong đó:
id_ed25519 = Private Key
id_ed25519.pub = Public Key
Bạn chỉ dùng file .pub để thêm vào Vultr hoặc DigitalOcean. Không chia sẻ file private key cho bất kỳ ai.
Bước 3: Đặt passphrase cho SSH Key

Tiếp theo, hệ thống sẽ hỏi:
Enter passphrase:
Enter same passphrase again:
Bạn nên đặt một passphrase mạnh để bảo vệ private key. Có thể Enter để bỏ qua hoặc nhập mật khẩu vào.
Passphrase giống như một lớp mật khẩu bảo vệ SSH Key. Nếu ai đó lấy được private key nhưng không biết passphrase, họ vẫn khó sử dụng key đó để login VPS.
Cách copy Public Key
Sau khi tạo SSH Key, bạn cần copy nội dung Public Key để thêm vào Vultr hoặc DigitalOcean.
Trên macOS
Chạy lệnh:
pbcopy < ~/.ssh/id_ed25519.pub
Lệnh này sẽ copy public key vào clipboard. Hoặc có thể sử dụng lệnh cat như ở Linux.

Trên Linux
Chạy lệnh:
cat ~/.ssh/id_ed25519.pub
Sau đó copy toàn bộ nội dung hiện ra.
Public key thường bắt đầu bằng:
ssh-ed25519
Ví dụ:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxx
Trên Windows PowerShell
Chạy lệnh:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard
Lệnh này sẽ copy public key vào clipboard.
Nếu muốn xem nội dung public key trước, dùng:
type $env:USERPROFILE\.ssh\id_ed25519.pub
Cách tạo và login VPS DigitalOcean bằng SSH Key
Ở phần tạo Droplet mới trên Digital Ocean, có phần tuỳ chọn SSH Key hoặc Password. Bạn nhận nút Add SSH key.

Sau đó, tiến hành dán nội dung đã dùng lệnh cat ở phần trên.

Nội dung thường bắt đầu bằng ssh-ed25519 ….
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxx

Sau đó, chọn vào tên SSH Key mà bạn đã tạo trước đó, kiểm tra tất cả thông tin đã OK chưa! Tiến hanh nhất nút Create Droplet.
Sau khi Droplet được tạo xong, bạn lấy địa chỉ IP của VPS trong DigitalOcean Control Panel.
Mở Terminal hoặc PowerShell và chạy lệnh:
ssh root@IPVPS
Ví dụ:
ssh [email protected]
Nếu đây là lần đầu tiên kết nối, bạn có thể thấy thông báo:
The authenticity of host '123.123.123.123' can't be established.
Are you sure you want to continue connecting (yes/no)?
Bạn nhập:
yes
rồi nhấn Enter.

Nếu private key nằm ở vị trí mặc định, hệ thống sẽ tự động dùng key để đăng nhập.
Nếu bạn có nhiều SSH Key hoặc lưu key ở vị trí khác, dùng lệnh:
ssh -i ~/.ssh/id_ed25519 [email protected]Trên Windows:
ssh -i C:\Users\YourUser\.ssh\id_ed25519 [email protected]
Cách thêm SSH Key và login vào Vultr
Xem lại bài viết về cách tạo tài khoản Vultr rất chi tiết mà mình đã chia sẻ trong bài này.
Với Vultr, bạn nên thêm SSH Key vào tài khoản trước khi tạo VPS.

Các bước thực hiện:

Đăng nhập Vultr > Chọn SSH Keys trong phần Orchestration > Chọn Add SSH Key

Dán Public Key vào ô SSH Key Contents đã tạo thông qua hướng dẫn ở trên >> Add SSH key.

Tên key nên dễ nhớ, ví dụ:
MacBook-Key
Office-PC-Key
Main-SSH-Key
Damme
Sau khi thêm key vào tài khoản Vultr, bạn có thể chọn key này khi deploy VPS mới. Tại phần SSH Keys, bạn tick chọn SSH Key đã thêm trước đó.

Như vậy, chúng ta đã hoàn tất việc tạo SSH Key và đăng nhập vào VPS một cách an toàn và nhanh chóng. Bây giờ, bạn có thể cài đặt VPSSIM, LarVPS hoặc các thiết lập khác vào VPS/Server để chạy cho các dự án của mình rồi đấy!
Một số lỗi thường gặp khi login VPS bằng SSH Key
1. Lỗi Permission denied publickey
Thông báo thường gặp:
Permission denied (publickey).
Nguyên nhân có thể là:
Bạn dùng sai private key
Public key chưa được thêm vào VPS
Sai username, ví dụ dùng root thay vì linuxuser
File authorized_keys trên VPS bị lỗi
Quyền file SSH chưa đúng
Cách xử lý:
ssh -i ~/.ssh/id_ed25519 root@IPVPS
Hoặc nếu dùng Vultr Limited User:
ssh -i ~/.ssh/id_ed25519 linuxuser@IPVPS
2. Lỗi Bad permissions
Nếu SSH báo lỗi liên quan đến quyền file private key, bạn có thể sửa bằng:
chmod 600 ~/.ssh/id_ed25519
Và sửa quyền thư mục .ssh:
chmod 700 ~/.ssh
3. Lỗi Connection timed out
Lỗi này thường không phải do SSH Key, mà do kết nối đến VPS có vấn đề.
Nguyên nhân có thể là:
VPS chưa khởi động xong
Sai địa chỉ IP
Firewall chặn port 22
SSH service chưa chạy
Nhà cung cấp VPS đang gặp sự cố
Bạn nên kiểm tra lại IP, trạng thái VPS và firewall.
4. Nếu cài lại macOS thì SSH Key có mất không?
Có thể mất. Nếu bạn cài lại macOS mà không backup, private key cũ có thể bị xóa.
Khi mất private key, bạn sẽ không thể dùng SSH Key cũ để login VPS nữa. Trước khi cài lại macOS, hãy backup thư mục:
~/.ssh/
Đặc biệt là file:
~/.ssh/id_ed25519
5. Có thể khôi phục Private Key từ Public Key không?
Không. Bạn không thể tạo lại Private Key từ Public Key.
Nếu mất private key, bạn cần tạo SSH Key mới và thêm public key mới vào VPS.
6. Cách backup SSH Key trước khi cài lại macOS?
Bạn có thể backup thư mục .ssh bằng lệnh:
tar -czvf ssh-backup.tar.gz ~/.ssh
Để an toàn hơn, nên nén có mật khẩu:
zip -er ssh-backup.zip ~/.ssh
Sau đó lưu file backup vào nơi an toàn như USB, ổ cứng ngoài hoặc thiết bị lưu trữ riêng. Không nên upload private key lên Google Drive, iCloud hoặc Dropbox nếu file chưa được mã hóa.
7. Sau khi cài lại macOS, restore SSH Key thế nào?
Sau khi copy lại thư mục .ssh vào máy mới, cần sửa quyền file:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
Sau đó thử login VPS:
ssh root@IPVPS
Hoặc chỉ định key rõ ràng:
ssh -i ~/.ssh/id_ed25519 root@IPVPS
8. Nếu quên backup SSH Key thì làm sao?
Bạn cần tạo SSH Key mới:
ssh-keygen -t ed25519 -C "[email protected]"
Sau đó copy public key mới:
pbcopy < ~/.ssh/id_ed25519.pub
Tiếp theo, thêm public key mới vào VPS bằng một trong các cách sau:
Login bằng password nếu VPS còn cho phép
Dùng web console của Vultr, DigitalOcean hoặc Linode
Dùng rescue mode/recovery mode của nhà cung cấp VPS
Sau khi thêm public key mới, bạn có thể login lại bằng SSH Key mới.

