Mật khẩu SSH có thể bị đoán ra. Khóa thì không. Chuyển VPS sang đăng nhập bằng khóa là nâng cấp bảo mật lớn nhất bạn có thể làm, và chỉ mất khoảng năm phút.
Khóa SSH hoạt động thế nào
Bạn tạo một cặp tệp. Khóa riêng ở lại trên máy tính của bạn và không bao giờ được chia sẻ. Khóa công khai được đặt trên máy chủ. Khi bạn kết nối, máy chủ yêu cầu máy tính của bạn chứng minh rằng nó giữ khóa riêng tương ứng, mà khóa không bao giờ đi qua mạng.
1. Tạo cặp khóa
ssh-keygen -t ed25519 -C "me@laptop"
Khóa Ed25519 ngắn, nhanh và hiện đại. Hãy chọn một cụm mật khẩu khi được hỏi, để laptop bị đánh cắp không đồng nghĩa với máy chủ bị đánh cắp. Trên Windows 10 và 11, cùng lệnh này chạy được trong PowerShell.
2. Sao chép khóa công khai lên máy chủ
ssh-copy-id user@your.server.ip
Nếu không có ssh-copy-id, hãy nối nội dung của ~/.ssh/id_ed25519.pub vào ~/.ssh/authorized_keys trên máy chủ, rồi chạy chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys.
3. Kiểm tra trước khi tắt mật khẩu
Mở một terminal thứ hai và đăng nhập bằng khóa. Hãy giữ phiên đầu tiên mở cho đến khi việc này chạy được, để một sai sót không thể khóa bạn bên ngoài.
4. Tắt đăng nhập bằng mật khẩu
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
sudo sshd -t && sudo systemctl reload ssh
Lệnh kiểm tra sshd -t bắt lỗi gõ sai trước khi chúng làm hỏng quyền truy cập của bạn. Trên một số hệ thống, dịch vụ có tên là sshd thay vì ssh.
5. Một cấu hình client gọn gàng
# ~/.ssh/config
Host myvps
HostName your.server.ip
User deploy
IdentityFile ~/.ssh/id_ed25519
Giờ bạn chỉ cần gõ ssh myvps.
Thực hành tốt
- Dùng một khóa riêng cho mỗi thiết bị, để bạn có thể thu hồi một khóa mà không ảnh hưởng đến các khóa khác.
- Dùng
ssh-agentđể bạn chỉ nhập cụm mật khẩu một lần mỗi phiên. - Xóa khóa khỏi
authorized_keyskhi thiết bị bị mất hoặc nhân viên nghỉ việc. - Thêm fail2ban để giảm nhiễu nhật ký, như trong danh sách kiểm tra bảo mật 15 phút của chúng tôi.