Tăng cường bảo mật SSH: key, cổng, hạn chế
Cách cấu hình sshd: đăng nhập chỉ bằng key, hạn chế người dùng và địa chỉ, thay đổi cổng, và cách không mất quyền truy cập trong quá trình đó.
Cập nhật 23 tháng 8, 2026
SSH là cánh cửa duy nhất dẫn vào máy mà bạn dùng hằng ngày, đồng thời là mục tiêu chính của các cuộc tấn công brute-force tự động. Bạn chỉ cần cấu hình một lần, sau đó không phải bận tâm nữa.
Hãy thực hiện mọi chỉnh sửa trong một tệp riêng, /etc/ssh/sshd_config.d/99-hardening.conf — như vậy bản cập nhật gói sẽ không ghi đè lên công sức của bạn và khiến bạn mất quyền truy cập.
Dùng khóa thay cho mật khẩu
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
PermitEmptyPasswords no
Trước khi áp dụng, hãy chắc chắn rằng khóa thực sự hoạt động: đăng nhập bằng khóa đó trong một cửa sổ riêng. Khóa được thêm trong tab “Access” của bảng điều khiển /hosting/vds/m/<id> sẽ thuộc về người dùng root; với những người dùng khác, bạn phải tự đặt chúng vào ~/.ssh/authorized_keys.
Tạo khóa ở phía bạn:
ssh-keygen -t ed25519 -C "work laptop"
ed25519 ngắn hơn và nhanh hơn RSA. Nếu công cụ của bạn không hỗ trợ loại này, hãy dùng rsa với độ dài tối thiểu 4096 bit.
Ai được đăng nhập
PermitRootLogin prohibit-password
AllowUsers artem deploy
MaxAuthTries 3
LoginGraceTime 20
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers là quy tắc hiệu quả nhất sau khi tắt mật khẩu: việc brute-force tên của người khác dừng lại ngay lập tức. Thông tin thêm về root — tắt đăng nhập root bằng mật khẩu.
Giới hạn địa chỉ, nếu bạn làm việc từ một vị trí cố định:
Match Address 203.0.113.5
PermitRootLogin yes
Đổi cổng
Chuyển SSH từ cổng 22 sang một cổng không tiêu chuẩn không bảo vệ bạn khỏi một cuộc tấn công có chủ đích, nhưng nó loại bỏ gần như toàn bộ tiếng ồn từ các trình quét tự động trong nhật ký của bạn.
Port 2222
Thứ tự các bước bắt buộc phải như sau:
ufw allow 2222/tcp
sshd -t
systemctl restart ssh
ssh -p 2222 artem@<address>
ufw delete allow 22/tcp
Quy tắc tường lửa phải có trước khi khởi động lại, và chỉ xóa quy tắc cũ sau khi đăng nhập thành công qua cổng mới. Xem thêm cổng.
Áp dụng và kiểm tra
sshd -t
sshd -T | grep -Ei "passwordauth|permitroot|allowusers|port"
systemctl restart ssh
sshd -t kiểm tra cú pháp, sshd -T hiển thị cấu hình hiệu lực cuối cùng — tức là cấu hình thực sự được dùng, chứ không phải những gì bạn đã viết trong tệp.
Hãy giữ phiên hiện tại luôn mở trong khi cấu hình. Nó sẽ tồn tại qua lần khởi động lại sshd, và nhờ nó bạn có thể khôi phục một chỉnh sửa thất bại. Nếu bạn tự khóa mình ra ngoài — tab “Console” trong bảng điều khiển hoạt động độc lập với SSH.
Lỗi thường gặp
| Lỗi | Hậu quả | Cách khắc phục |
|---|---|---|
| Tắt mật khẩu mà không kiểm tra khóa | Mất hoàn toàn quyền truy cập qua mạng | Đăng nhập qua console của bảng điều khiển và khôi phục cài đặt |
Chỉnh sửa trong tệp chính đè lên một dòng từ sshd_config.d | Cài đặt không có hiệu lực | Kiểm tra bằng sshd -T |
| Đổi cổng mà không có quy tắc ufw | Mất quyền truy cập | Đặt quy tắc trước, rồi mới đổi cổng |
Quyền trên ~/.ssh rộng hơn 700 | Khóa bị bỏ qua một cách âm thầm | chmod 700 ~/.ssh, chmod 600 authorized_keys |
AllowUsers thiếu tên của chính bạn | Bạn tự khóa mình ra ngoài | Console của bảng điều khiển, chỉnh sửa tệp |
Trong
sshd_config, lần xuất hiện đầu tiên của một tham số sẽ thắng, và các tệp từsshd_config.dđược đưa vào ở đầu. Vì vậy hãy kiểm tra kết quả bằngsshd -Tthay vì đọc tệp.
fail2ban sẽ dọn sạch phần tiếng ồn brute-force còn lại.