Vì sao cần SSH key thay vì password ngay? — Cơn ác mộng Brute-force port 22
Việc mở port 22 (SSH) ra Internet là một rủi ro bảo mật tiềm ẩn. Kẻ xấu liên tục quét và tấn công dò mật khẩu (brute-force) vào server của bạn.
- 🔐 Tăng cường bảo mật: Khóa truy cập bằng chuỗi ký tự phức tạp.
- 🚀 Đăng nhập nhanh hơn: Không cần gõ mật khẩu mỗi lần.
- 🚫 Chặn tấn công: Ngăn chặn hiệu quả các cuộc tấn công brute-force.
- 🔑 Quản lý tập trung: Dễ dàng cấp/thu hồi quyền truy cập.
- 💸 Tiết kiệm chi phí: Giảm nguy cơ server bị chiếm dụng làm botnet.
1. Tạo cặp SSH key — Chìa khóa và ổ khóa của bạn
Tóm gọn: SSH key bao gồm một cặp file: public key (chia sẻ được) và private key (giữ bí mật tuyệt đối). Bạn sẽ tạo cặp này trên máy tính cá nhân (local machine).
Bước 1: Mở Terminal trên máy Local
Sử dụng Terminal trên macOS/Linux hoặc Git Bash/WSL trên Windows.
Bước 2: Chạy lệnh ssh-keygen
Lệnh này sẽ hướng dẫn bạn tạo cặp key.
ssh-keygen -t rsa -b 4096
-t rsa: Chỉ định thuật toán mã hóa là RSA.-b 4096: Đặt độ dài key là 4096 bit, tăng cường độ bảo mật.
Output mẫu:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz0123456789aBcDeFg user@hostname
The key's randomart image is:
+---[RSA 4096]----+
| .o=. |
| .o+o . |
| . o=o |
| o.+ |
| . S |
| o . |
| . o |
| . o . |
| . o+o |
+----[SHA256]-----+
Bước 3: Nhập đường dẫn lưu key và Passphrase
- Enter file in which to save the key: Nhấn Enter để chấp nhận đường dẫn mặc định (
~/.ssh/id_rsa). Đây là nơi lưu trữ private key và public key. - Enter passphrase: Nhập một mật khẩu mạnh để bảo vệ private key. Đây là lớp bảo mật thứ hai, rất quan trọng. Nếu ai đó lấy được private key của bạn, họ vẫn cần mật khẩu này để sử dụng nó. Nhấn Enter nếu bạn muốn không có passphrase (không khuyến khích).
- Enter same passphrase again: Nhập lại passphrase để xác nhận.
⚠️ Cảnh báo: Tuyệt đối không chia sẻ file private key (
id_rsa) với bất kỳ ai. File này là “chìa khóa vạn năng” truy cập server của bạn.
2. Copy Public Key lên Server — Mở cửa cho “chìa khóa” của bạn
Tóm gọn: Bạn cần đưa public key (id_rsa.pub) lên server để server biết và tin tưởng “chìa khóa” này.
Bước 1: Sử dụng ssh-copy-id (Cách dễ nhất)
Lệnh ssh-copy-id tự động copy public key và thiết lập quyền truy cập trên server.
ssh-copy-id username@your_server_ip
username: Tên người dùng bạn sẽ đăng nhập vào server.your_server_ip: Địa chỉ IP hoặc tên miền của server VPS.
Sau khi chạy lệnh này, bạn sẽ được hỏi mật khẩu SSH của user trên server. Nhập đúng mật khẩu, public key sẽ được thêm vào file ~/.ssh/authorized_keys trên server.
Bước 2: Copy thủ công (Nếu ssh-copy-id không có sẵn)
Đầu tiên, xem nội dung public key của bạn:
cat ~/.ssh/id_rsa.pub
Output mẫu:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3qL7J... user@hostname
Tiếp theo, SSH vào server bằng mật khẩu:
ssh username@your_server_ip
Sau khi đăng nhập, tạo thư mục .ssh nếu chưa có và đặt quyền truy cập đúng:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Tạo hoặc chỉnh sửa file authorized_keys và dán public key của bạn vào đó:
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3qL7J... user@hostname" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
💡 Mẹo: Đảm bảo bạn copy toàn bộ dòng public key, bao gồm cả
ssh-rsavà phầnuser@hostname.
3. Kiểm tra đăng nhập bằng SSH key — Bước cuối cùng
Tóm gọn: Sau khi copy public key, hãy thử đăng nhập lại để xác nhận SSH key hoạt động.
Bước 1: Đăng nhập lại bằng SSH
Từ máy local, chạy lại lệnh SSH:
ssh username@your_server_ip
Nếu bạn đã đặt passphrase cho private key, bạn sẽ được hỏi passphrase đó. Nếu không đặt passphrase, bạn sẽ đăng nhập thẳng vào server mà không cần gõ bất kỳ mật khẩu nào.
Bước 2: Xác nhận SSH key đã được sử dụng
Sau khi đăng nhập thành công, bạn có thể kiểm tra log SSH trên server để xem key đã được sử dụng:
sudo grep 'Accepted key' /var/log/auth.log
Output mẫu:
Jul 20 10:30:00 your_server_hostname sshd[12345]: Accepted key RSA SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz0123456789aBcDeFg of user@hostname port 22 ssh2
4. Vô hiệu hóa đăng nhập bằng Password trên Server — Khóa chặt cửa
Tóm gọn: Để tận dụng tối đa bảo mật của SSH key, bạn nên tắt hoàn toàn khả năng đăng nhập bằng mật khẩu trên server.
Bước 1: Chỉnh sửa file cấu hình SSHD
Mở file cấu hình SSH daemon (sshd_config) bằng trình soạn thảo văn bản (ví dụ: nano):
sudo nano /etc/ssh/sshd_config
Bước 2: Tìm và sửa các dòng cấu hình
Tìm các dòng sau và đảm bảo chúng có giá trị như bên dưới:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
PasswordAuthentication no: Vô hiệu hóa hoàn toàn việc xác thực bằng mật khẩu.ChallengeResponseAuthentication no: Vô hiệu hóa các cơ chế xác thực tương tác khác (thường liên quan đến PAM).UsePAM no: Tắt Pluggable Authentication Modules. Lưu ý: Việc tắt PAM có thể ảnh hưởng đến các dịch vụ khác phụ thuộc vào PAM. Nếu bạn không chắc chắn, hãy đểUsePAM yesvà chỉ tắtPasswordAuthentication no.
💡 Mẹo: Trước khi tắt
PasswordAuthentication, hãy đảm bảo bạn đã đăng nhập thành công bằng SSH key và có thể thực hiện các lệnh quản trị. Nếu không, bạn có thể tự khóa mình ra khỏi server.
Bước 3: Khởi động lại dịch vụ SSHD
Sau khi lưu file cấu hình, bạn cần khởi động lại dịch vụ SSH để áp dụng thay đổi:
sudo systemctl restart sshd
Bước 4: Kiểm tra lại
Thử SSH vào server từ một kết nối mới. Nếu bạn đã tắt đăng nhập bằng mật khẩu, bạn sẽ không thể đăng nhập bằng mật khẩu nữa.
ssh username@your_server_ip
Bạn chỉ nên đăng nhập được bằng SSH key (và passphrase nếu có).
5. Pitfalls & Lỗi thường gặp — Những cạm bẫy cần tránh
Tóm gọn: Dù đơn giản, việc thiết lập SSH key vẫn có thể gặp một số lỗi phổ biến.
- Lỗi 1: Private key bị lộ.
- Vấn đề: File
~/.ssh/id_rsatrên máy local bị sao chép hoặc truy cập trái phép. - Cách fix: Ngay lập tức xóa public key khỏi
authorized_keystrên tất cả các server bạn đã sử dụng key đó. Tạo lại cặp key mới và đặt passphrase mạnh.
- Vấn đề: File
- Lỗi 2: Quyền truy cập thư mục/file sai trên server.
- Vấn đề: Thư mục
~/.sshhoặc file~/.ssh/authorized_keyscó quyền quá rộng (ví dụ: 777). SSHD sẽ từ chối sử dụng key vì lý do bảo mật. - Cách fix: Đảm bảo quyền truy cập đúng:
chmod 700 ~/.sshvàchmod 600 ~/.ssh/authorized_keystrên server.
- Vấn đề: Thư mục
- Lỗi 3: Copy Public Key bị thiếu hoặc sai ký tự.
- Vấn đề: Copy thiếu phần cuối (
user@hostname) hoặc sai một ký tự trong public key khi thêm vàoauthorized_keys. - Cách fix: Sử dụng
cat ~/.ssh/id_rsa.pubđể xem lại đúng public key trên máy local và copy chính xác từng ký tự vào fileauthorized_keystrên server. Hoặc đơn giản là dùng lạissh-copy-id.
- Vấn đề: Copy thiếu phần cuối (
- Lỗi 4: Quên Passphrase cho Private Key.
- Vấn đề: Bạn đã đặt passphrase cho private key nhưng giờ quên mất.
- Cách fix: Không có cách nào để khôi phục passphrase. Bạn buộc phải tạo lại cặp SSH key mới và đặt passphrase dễ nhớ hơn (nhưng vẫn đủ mạnh).
- Lỗi 5: Tắt Password Authentication quá sớm.
- Vấn đề: Đã tắt đăng nhập bằng mật khẩu trên server nhưng SSH key lại không hoạt động, dẫn đến mất quyền truy cập.
- Cách fix: Đây là lý do bạn cần luôn kiểm tra SSH key hoạt động tốt trước khi tắt Password Authentication. Nếu lỡ bị khóa, bạn có thể cần liên hệ nhà cung cấp VPS để reset truy cập hoặc mount ổ đĩa để sửa file cấu hình.
⚠️ Cảnh báo: Luôn kiểm tra kỹ các bước trước khi thực hiện, đặc biệt là khi chỉnh sửa cấu hình bảo mật quan trọng như SSH.
6. Key Takeaways — Nắm chắc kiến thức cốt lõi
- SSH key cung cấp bảo mật cao hơn so với mật khẩu truyền thống.
- Cặp SSH key gồm private key (bí mật) và public key (chia sẻ).
- Sử dụng
ssh-keygenđể tạo cặp key vàssh-copy-idđể triển khai lên server. - Passphrase là lớp bảo mật bổ sung cho private key.
- Tắt đăng nhập bằng mật khẩu trên server là bước cuối cùng để khóa chặt bảo mật.
7. FAQ — Giải đáp thắc mắc thường gặp
### SSH key có an toàn hơn mật khẩu không?
Có, SSH key phức tạp hơn nhiều so với mật khẩu thông thường và không bị tấn công dò quét (brute-force) dễ dàng.
### Tôi có thể dùng chung một SSH key cho nhiều server không?
Có, bạn có thể dùng cùng một public key để truy cập nhiều server khác nhau. Tuy nhiên, hãy cân nhắc rủi ro: nếu private key bị lộ, tất cả các server đó đều bị ảnh hưởng.
### Làm sao để quản lý nhiều SSH key?
Bạn có thể lưu trữ các cặp key khác nhau trong các thư mục khác nhau và sử dụng file cấu hình SSH (~/.ssh/config) để chỉ định key nào sẽ dùng cho server nào.
### Nếu tôi mất private key thì sao?
Bạn sẽ không thể đăng nhập vào các server đã sử dụng public key tương ứng. Bạn cần tạo lại cặp key mới và cập nhật public key lên server.
### Có cần đặt Passphrase cho Private Key không?
Rất khuyến khích. Passphrase cung cấp một lớp bảo mật bổ sung quan trọng. Nếu ai đó lấy được file private key của bạn, họ vẫn cần passphrase để sử dụng nó.
Cần VPS chạy Linux ổn định để thực hành?
Thiết lập SSH key là bước cơ bản nhưng cực kỳ quan trọng để bảo vệ server của bạn. Đừng chần chừ, hãy bắt đầu bảo mật VPS ngay hôm nay!
VSIS.net cung cấp các dịch vụ VPS cấu hình mạnh mẽ, giá tốt, sẵn sàng cho mọi nhu cầu của bạn.



