Một máy chủ vừa mở ra Internet sẽ bị dò mật khẩu SSH trong vòng vài phút. Vài bước dưới đây loại bỏ gần như toàn bộ rủi ro đó.
1. Tạo khóa trên máy của bạn
ssh-keygen -t ed25519 -C "ten@maytinh"
# Nhấn Enter dùng đường dẫn mặc định, ĐẶT passphrase
Dùng ed25519 thay cho RSA: ngắn hơn, nhanh hơn và an toàn hơn. Khóa riêng ~/.ssh/id_ed25519 không bao giờ rời khỏi máy bạn.
2. Chép khóa công khai lên máy chủ
ssh-copy-id user@may-chu
# Nếu không có ssh-copy-id
cat ~/.ssh/id_ed25519.pub | ssh user@may-chu \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Kiểm tra đăng nhập bằng khóa hoạt động trước khi làm bước tiếp theo — nếu không bạn sẽ tự khóa mình ra ngoài.
3. Siết cấu hình sshd
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
MaxAuthTries 3
LoginGraceTime 30
AllowUsers deploy quantri
sudo sshd -t # kiểm tra cú pháp TRƯỚC
sudo systemctl reload ssh
Mẹo an toàn: giữ nguyên phiên SSH hiện tại đang mở, rồi mở một cửa sổ mới để thử đăng nhập. Nếu hỏng, bạn vẫn còn phiên cũ để sửa lại.
4. Chặn dò mật khẩu với fail2ban
sudo apt install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 3
findtime = 10m
bantime = 1h
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd # xem IP đã bị chặn
5. Đổi cổng mặc định (tùy chọn)
# /etc/ssh/sshd_config
Port 2222
Đổi cổng không phải biện pháp bảo mật thật sự, nhưng nó cắt được phần lớn rác trong log từ các bot quét cổng 22. Nhớ mở cổng mới trên tường lửa trước khi reload.
6. Tiện ích: file config phía client
# ~/.ssh/config
Host web
HostName 203.0.113.10
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
Từ giờ chỉ cần gõ ssh web.
Danh sách kiểm tra
- ☑ Đăng nhập bằng khóa hoạt động
- ☑
PasswordAuthentication no - ☑
PermitRootLogin no - ☑ fail2ban đang chạy
- ☑ Tường lửa chỉ mở cổng thật sự cần
- ☑ Khóa riêng có passphrase và đã được sao lưu an toàn
