Skip to content
VDS · Bảo mật

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ỗiHậu quảCách khắc phục
Tắt mật khẩu mà không kiểm tra khóaMấ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.dCài đặt không có hiệu lựcKiểm tra bằng sshd -T
Đổi cổng mà không có quy tắc ufwMấ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 700Khóa bị bỏ qua một cách âm thầmchmod 700 ~/.ssh, chmod 600 authorized_keys
AllowUsers thiếu tên của chính bạnBạn tự khóa mình ra ngoàiConsole 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ằng sshd -T thay vì đọc tệp.

fail2ban sẽ dọn sạch phần tiếng ồn brute-force còn lại.