Bật SSH trên Ubuntu
Xem thửSSH (Secure Shell) là cách chuẩn để quản trị Ubuntu server từ xa: mã hóa phiên, xác thực, và tunnel. Trên cloud/VPS, hầu hết công việc SysAdmin bắt đầu bằng ssh user@host.
Bật OpenSSH Server trên Ubuntu
sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
sudo systemctl status ssh --no-pager
ss -tulpn | grep ':22'
Gói openssh-server cung cấp daemon sshd. Unit systemd thường tên ssh trên Ubuntu (không phải sshd như một số distro).
Xác thực bằng khóa (khuyến nghị)
Trên máy client:
ssh-keygen -t ed25519 -C "admin@laptop" -f ~/.ssh/id_ed25519
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
# hoặc thủ công:
# cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys (trên server, quyền 600)
| Thành phần | Vai trò |
|---|---|
Private key (id_ed25519) | Giữ bí mật trên client — không copy lên server |
Public key (.pub) | Nằm trong ~/.ssh/authorized_keys trên server |
authorized_keys | Quyền thư mục ~/.ssh ≈ 700, file ≈ 600 |
Đang tải sơ đồ…
Cách đọc sơ đồ. Khóa riêng không bao giờ rời máy client: client dùng nó để ký một thử thách, còn server chỉ giữ khóa công khai trong authorized_keys để kiểm tra chữ ký. Nhờ vậy mật khẩu hay khóa bí mật không đi qua mạng, và quyền file 600 cho authorized_keys giúp sshd tin vào nội dung đó.
Hardening cơ bản (/etc/ssh/sshd_config)
Chỉnh có chủ đích, rồi reload:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudoedit /etc/ssh/sshd_config
# hoặc drop-in: /etc/ssh/sshd_config.d/99-hardening.conf
sudo sshd -t && sudo systemctl reload ssh
Gợi ý thực tế (điều chỉnh theo policy):
| Hướng | Ghi chú |
|---|---|
PermitRootLogin no hoặc prohibit-password | Tránh login root trực tiếp bằng password; nhiều cloud image đã dùng key-only cho ubuntu/root |
PasswordAuthentication no | Chỉ khi đã xác nhận key login hoạt động (giữ session cứu hộ) |
PubkeyAuthentication yes | Bật key auth |
| Đổi port (tùy chọn) | Giảm noise bot; không thay firewall/security group đúng |
AllowUsers / nhóm | Thu hẹp ai được SSH |
Firewall & cloud security group
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Trên AWS/GCP/Azure: mở TCP 22 (hoặc port SSH) từ IP quản trị, không mở 0.0.0.0/0 nếu có thể.
Kiểm tra nhanh sau khi bật
ssh -v user@server
journalctl -u ssh -n 50 --no-pager
Đang tải sơ đồ…
Cách đọc sơ đồ. Kết nối đi qua tường lửa hoặc Security Group rồi mới tới sshd đang lắng nghe cổng 22. Sau khi kênh mã hóa được dựng, server gửi thử thách, client ký bằng khóa riêng và server xác minh bằng khóa công khai. ssh -v in từng bước này nên rất hữu ích để biết hỏng ở đâu.
Lỗi thường gặp
- Cài
openssh-clienttrên server rồi ngạc nhiên không có daemon — cần server. - Tắt password trước khi key hoạt động sẽ tự khóa mình ở ngoài (cần console cloud).
authorized_keysquyền 777 thìsshdtừ chối.- Security group chặn 22 trong khi
sshdđang listen.