

SSH Key Quản Lý Server Linux An Toàn
SSH key là phương thức xác thực mạnh nhất cho server Linux, thay thế mật khẩu dễ bị brute-force. Hướng dẫn này giải thích cách tạo, phân phối và quản lý SSH key hiệu quả.
SSH Key Là Gì?
SSH (Secure Shell) là giao thức mạng mã hóa được sử dụng rộng rãi để quản lý server từ xa. SSH key là phương thức xác thực sử dụng cặp khóa mật mã học thay cho mật khẩu truyền thống. Khóa private giữ an toàn trên máy tính cá nhân, khóa public được cài đặt trên server. Không cần truyền mật khẩu qua mạng, bảo mật vượt trội so với xác thực bằng mật khẩu.
Cặp khóa hoạt động theo nguyên tắc mã hóa bất đối xứng: khóa private giải mã được dữ liệu mã hóa bằng khóa public tương ứng, nhưng ngược lại thì bất khả thi về mặt toán học với máy tính hiện tại. Điều này có nghĩa là hacker không thể suy ra khóa private từ khóa public.
Tạo SSH Key Trên Máy Cá Nhân
Chạy lệnh sau trên terminal để tạo cặp khóa Ed25519 — modern, nhanh và an toàn:
ssh-keygen -t ed25519 -C "[email protected]"
Sau khi chạy lệnh, hệ thống yêu cầu chọn vị trí lưu và nhập passphrase (tùy chọn nhưng khuyến nghị):
- Ed25519 nhẹ hơn RSA 4096-bit, hiệu suất tốt hơn, bảo mật tương đương.
- Khóa private lưu tại
~/.ssh/id_ed25519— bảo mật tuyệt đối, KHÔNG chia sẻ ai. - Khóa public là
~/.ssh/id_ed25519.pub— an toàn khi chia sẻ cho server. - Passphrase thêm lớp bảo vệ nếu khóa private bị đánh cắp hoặc rò rỉ.
So Sánh Các Loại Khóa SSH
| Thuật toán | Độ an toàn | Kích thước khóa | Tốc độ | Khuyến nghị |
|---|---|---|---|---|
| Ed25519 | 256-bit | 256-bit (nhỏ) | Nhanh nhất | Ưu tiên sử dụng |
| RSA | 2048-4096-bit | 2048+ bit (lớn) | Chậm hơn | Tương thích rộng |
| ECDSA | 256-384-bit | 256-bit | Nhanh | Hỗ trợ hạn chế |
| SSH-1 (DSA) | 80-bit | 1024-bit | Chậm | KHÔNG sử dụng |
RSA 2048-bit vẫn phổ biến vì tương thích với hầu hết hệ thống cũ. Tuy nhiên, Ed25519 là lựa chọn tốt nhất cho bảo mật và hiệu suất hiện đại.
Phân Phối Khóa Public Lên Server
Sau khi tạo khóa, copy khóa public lên server:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
Lệnh này tự động thêm khóa vào ~/.ssh/authorized_keys trên server. Nếu không có ssh-copy-id, copy thủ công nội dung id_ed25519.pub vào file authorized_keys trên server.
Đảm bảo quyền chính xác trên server:
- Thư mục
~/.sshphải có quyền 700 (chmod 700 ~/.ssh). - File
authorized_keysphải có quyền 600 (chmod 600 ~/.ssh/authorized_keys). - Chủ sở hữu thư mục và file phải là user được phép SSH vào.

Quản Lý SSH Key Hiệu Quả
Sử Dụng SSH Config Cho Nhiều Server
Khi quản lý nhiều server, tạo file ~/.ssh/config để dễ dàng chuyển đổi:
Host myserver1
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/id_ed25519_myserver1
Host myserver2
HostName 10.0.0.50
User ubuntu
IdentityFile ~/.ssh/id_ed25519_myserver2
Host *.internal
IdentityFile ~/.ssh/id_ed25519_internal
Sau đó chỉ cần gõ ssh myserver1 để kết nối tự động với đúng user và khóa.
Thu Hồi Và Rotation Khóa
Quản lý SSH key định kỳ là bắt buộc:
- Thu hồi: Xóa dòng khóa public tương ứng khỏi
authorized_keyskhi nhân viên rời đi hoặc key bị nghi ngờ rò rỉ. - Rotation: Tạo khóa mới mỗi 3-6 tháng, triển khai khóa mới trước khi xóa cũ.
- Audit: Liệt kê
wc -l ~/.ssh/authorized_keystrên tất cả server mỗi quý để đếm số khóa. - Tự động hóa: Sử dụng Ansible hoặc Chef để phân phối và thu hồi khóa hàng loạt.
Chuyển Sang SSH Certificate Cho Tổ Chức
Với tổ chức lớn, quản lý từng SSH key riêng lẻ là khó khăn. Giải pháp là SSH Certificate:
- SSH CA (Certificate Authority): Ký ngắn hạn cho user hoặc host, hết hạn tự động.
- Zero Trust: Không cần quản lý từng key riêng lẻ trên từng server.
- Công cụ: HashiCorp Vault SSH secrets engine, step-ca, Netflix BLESS.
- Luồng làm việc: User yêu cầu chứng chỉ → CA ký → User SSH vào server → Chứng chỉ hết hạn tự động.
Tắt Xác Thực Mật Khẩu Trên Server
Sau khi tất cả user xác nhận SSH key hoạt động tốt, vô hiệu hóa đăng nhập bằng mật khẩu:
sudo nano /etc/ssh/sshd_config
Sửa các dòng sau:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Khởi động lại SSH:
sudo systemctl restart sshd
THÔNG BÁO: Luôn giữ một phiên SSH đang mở trước khi khởi động lại sshd để không bị lockout.
Kết Luận
SSH key là lớp bảo vệ đầu tiên và quan trọng nhất cho mọi server Linux. Từ cá nhân quản lý VPS đơn lẻ đến tổ chức lớn với hàng trăm server, việc áp dụng SSH key đúng cách loại bỏ hoàn toàn rủi ro brute-force và credential stuffing.
Bắt đầu từ hôm nay — tạo SSH key Ed25519 cho tất cả server của bạn. Tìm hiểu thêm trên OpenSSH và tài liệu Linux.
