

SSH Key là phương thức xác thực sử dụng cặp khóa mã hóa để đăng nhập máy tính với máy chủ (VPS) hay các dịch vụ trực tuyến như GitHub từ xa mà không cần nhập mật khẩu. So với cách xác thực truyền thống, SSH Key giúp tăng cường bảo mật, giảm nguy cơ bị dò quét mật khẩu và được sử dụng rộng rãi trong quản trị hệ thống. Bài viết dưới đây sẽ giúp bạn hiểu SSH Key là gì, cách hoạt động và cách tạo SSH Key để đăng nhập máy chủ an toàn.
SSH Key là cặp khóa mật mã sử dụng mã hóa bất đối xứng (Asymmetric Cryptography) để xác thực người dùng khi kết nối đến máy chủ thông qua giao thức SSH (Secure Shell). Thay vì đăng nhập bằng mật khẩu, SSH Key sử dụng cặp khóa Public Key và Private Key để xác minh danh tính, giúp tăng cường bảo mật và giảm nguy cơ bị đánh cắp thông tin xác thực.

Một cặp SSH Key gồm hai thành phần:
Theo cấu hình mặc định của OpenSSH, cặp khóa SSH thường được lưu trong thư mục ~/.ssh/ của người dùng. Trên Windows, thư mục này nằm tại C:\Users\<Tên người dùng>\.ssh\, còn trên Linux và macOS là /home/<username>/.ssh/ hoặc ~/.ssh/.
SSH Key là công cụ hữu ích giúp người dùng thiết lập kết nối từ xa giữa các thiết bị qua Internet hoặc mạng nội bộ một cách an toàn. Dưới đây là một số ứng dụng phổ biến của SSH:
SSH Key hoạt động dựa trên cơ chế mã hóa bất đối xứng với hai thành phần là Public Key và Private Key. Khi người dùng kết nối đến máy chủ qua giao thức SSH, hệ thống sẽ sử dụng cặp khóa này để xác thực danh tính thay vì yêu cầu nhập mật khẩu.
Quá trình xác thực diễn ra theo các bước sau:

SSH Key có thể được tạo bằng nhiều thuật toán mã hóa khác nhau. Mỗi thuật toán có ưu điểm riêng về mức độ bảo mật, hiệu năng và khả năng tương thích với hệ thống.
RSA là thuật toán SSH Key được sử dụng phổ biến trong nhiều năm nhờ khả năng tương thích với hầu hết hệ điều hành, máy chủ và thiết bị mạng. Hiện nay, RSA vẫn là lựa chọn phù hợp khi cần kết nối với các hệ thống cũ hoặc môi trường yêu cầu tính tương thích cao.
Để đảm bảo an toàn, RSA nên sử dụng khóa có độ dài từ 3072-bit trở lên. Tuy nhiên, do kích thước khóa lớn nên tốc độ xử lý sẽ chậm hơn so với các thuật toán hiện đại như Ed25519.
Ed25519 là thuật toán SSH Key hiện đại và được OpenSSH lựa chọn làm mặc định trên nhiều phiên bản mới. Thuật toán này mang lại tốc độ xác thực nhanh, kích thước khóa nhỏ nhưng vẫn đảm bảo mức độ bảo mật rất cao.
So với RSA, Ed25519 tiêu tốn ít tài nguyên hơn, đồng thời hạn chế nhiều rủi ro bảo mật liên quan đến quá trình sinh khóa. Đây là lựa chọn được khuyến nghị cho hầu hết hệ thống triển khai mới.
ECDSA sử dụng mật mã đường cong Elliptic (ECC), cho phép đạt mức độ bảo mật tương đương RSA nhưng với kích thước khóa nhỏ hơn và hiệu năng tốt hơn.
Tuy vẫn được nhiều hệ điều hành và nền tảng hỗ trợ, ECDSA hiện không còn là lựa chọn ưu tiên do phụ thuộc vào một số tham số chuẩn NIST. Trong đa số trường hợp, Ed25519 vẫn được đánh giá là phương án phù hợp hơn.

DSA là thuật toán từng được sử dụng trong các phiên bản SSH đời đầu. Tuy nhiên, do chỉ hỗ trợ khóa 1024-bit và không còn đáp ứng các tiêu chuẩn bảo mật hiện nay, DSA đã bị OpenSSH ngừng hỗ trợ mặc định từ phiên bản 7.0.
Hiện nay, DSA chỉ còn xuất hiện trên một số hệ thống cũ và không được khuyến nghị sử dụng khi triển khai SSH Key.
Bước 1: Trước tiên, cần mở công cụ dòng lệnh (Terminal) trên máy tính cá nhân để bắt đầu quá trình tạo SSH Key.
Bước 2: Sau khi mở Terminal, tiến hành tạo cặp khóa SSH bằng cách nhập lệnh:
ssh-keygen
Lệnh này sẽ tạo ra một cặp khóa SSH gồm Private Key và Public Key. Private Key được lưu trên máy tính cá nhân và cần được bảo mật, trong khi Public Key sẽ được sao chép lên máy chủ để thực hiện xác thực khi đăng nhập.
Theo mặc định, ssh-keygen sẽ tạo khóa RSA 3072-bit. Nếu muốn sử dụng thuật toán Ed25519 dành cho các hệ thống hiện đại, có thể sử dụng lệnh:
ssh-keygen -t ed25519Sau khi chạy lệnh, hệ thống sẽ yêu cầu chọn vị trí lưu khóa. Người dùng có thể nhấn Enter để sử dụng đường dẫn mặc định trong thư mục .ssh.

Nếu SSH Key đã tồn tại trước đó, hệ thống sẽ hiển thị thông báo yêu cầu ghi đè khóa cũ. Nhập y nếu muốn tạo khóa mới thay thế.

Tiếp theo, hệ thống yêu cầu nhập Passphrase để bảo vệ Private Key. Có thể thiết lập mật khẩu để tăng bảo mật hoặc nhấn Enter hai lần để bỏ qua bước này.
Khi xuất hiện thông báo dưới thì có nghĩa là SSH Key đã được tạo thành công:
Your identification has been saved in /your_home/.ssh/id_rsa
Your public key has been saved in /your_home/.ssh/id_rsa.pub
Bước 3: Tiếp theo, cần lấy nội dung của Public Key để sao chép lên máy chủ hoặc các dịch vụ hỗ trợ SSH.
Sau khi chạy lệnh, hệ thống hiển thị một chuỗi ký tự dài bắt đầu bằng ssh-rsa hoặc ssh-ed25519. Đây là chuỗi SSH Key mà bạn sẽ sử dụng để kết nối máy chủ.

Sau khi tạo SSH Key thành công, bạn cần thêm Public Key lên VPS để máy chủ có thể nhận diện thiết bị truy cập. Private Key sẽ được giữ trên máy tính cá nhân và sử dụng trong quá trình đăng nhập.
Bước 1: Đầu tiên, bạn cần sao chép Public Key trên máy tính cá nhân. Mở Terminal (macOS/Linux) hoặc PowerShell, Command Prompt (Windows), sau đó chạy lệnh sau:
cat ~/.ssh/id_ed25519.pubHệ thống sẽ hiển thị nội dung của Public Key. Sao chép toàn bộ chuỗi ký tự bắt đầu bằng ssh-ed25519 để thêm vào VPS.
Bước 2: Tiếp theo, bạn cần đưa Public Key vừa sao chép lên máy chủ VPS. Đăng nhập vào VPS bằng mật khẩu hiện tại, sau đó thêm Public Key vào tệp:
~/.ssh/authorized_keysSau khi thêm thành công, VPS sẽ lưu lại thông tin nhận diện thiết bị của bạn và cho phép xác thực bằng SSH Key.
Bước 3: Cuối cùng, bạn có thể sử dụng Private Key để đăng nhập vào VPS thay vì nhập mật khẩu. Thực hiện kết nối bằng lệnh:
ssh -i ~/.ssh/id_ed25519 user@ip_address_serverNếu Private Key trên máy tính khớp với Public Key đã lưu trên VPS, hệ thống sẽ xác thực thành công và cấp quyền truy cập.
Hy vọng bài viết đã giúp bạn hiểu SSH Key là gì, cách hoạt động và cách triển khai trên VPS và các dịch vụ trực tuyến. Việc sử dụng SSH Key không chỉ tăng mức độ bảo mật mà còn giúp quá trình quản trị máy chủ thuận tiện và an toàn hơn. Nếu có điều kiện, bạn nên kết hợp SSH Key với các biện pháp bảo mật khác để bảo vệ hệ thống toàn diện.
