SSH Key là gì? Hướng Dẫn Tạo SSH Key cho DO và Vultr

5/5 - (1 bình chọn)

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ểmNhược điểm
PasswordDễ dùng, phù hợp người mớiKém an toàn hơn, dễ bị brute-force
SSH KeyBả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 + PassphraseAn 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
ssh key

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,…

ssh key nhieu vps

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!

ssh key nhieu vps
SSH Key Cho Cá Nhân hoặc Người mớ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:

ssh 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

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.

ssh-key-3

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.

ssh key

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

ssh key

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

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxx
ssh key

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.

ssh key

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.

ssh key vultr

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

ssh key vultr

Đă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.

ssh key vultr

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.

Thật vui khi biết bạn đang suy nghĩ gì...

Để lại bình luận

DamMe
Logo