Nếu bạn có bài tech note ngắn về SSH, hãy liên kết chéo tới đây. Bài này đi sâu sshd, key và bastion trong khung dev/DevOps thực chiến, không chỉ checklist một lần rồi quên.


SSH là giao thức được tin quá mức trong nhiều tổ chức

Hầu hết path quản trị đi qua SSH: human, Ansible, Terraform provisioner, git remote qua SSH… Nếu SSH yếu, mọi lớp khác trở nên vô nghĩa.

Mô hình: client có private key (hoặc password); server có authorized_keys hoặc PAM backend; sshd chạy privileged để bind 22 rồi drop xuống user (tuỳ build).


authorized_keys và permission

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# home directory không được writable bởi others, sshd strict mode
chmod go-w "$HOME"

Debug: chạy server debug (chỉ lab):

sudo /usr/sbin/sshd -ddd -p 2222

sshd_config, checklist thực dụng

DirectiveGợi ý
PasswordAuthenticationno khi đã có key + break-glass
PermitRootLoginprohibit-password hoặc no
PubkeyAuthenticationyes
AllowUsers / AllowGroupsgiới hạn account có shell
MaxAuthTriesgiảm brute-force noise
LoginGraceTimegiảm connection pile-up
ClientAliveIntervaltránh NAT middlebox drop idle
Subsystem sftpnếu chỉ cần SFTP-only user

Luôn sshd -t sau sửa config:

sudo sshd -t && sudo systemctl reload ssh.service

Host key verification: known_hosts và TOFU

Lần đầu SSH báo fingerprint, đó là Trust on First Use. Ở quy mô lớn, team dùng SSH CA ký host key để client tin một CA nội bộ thay vì từng fingerprint.


Bastion / jump host, đơn giản hoá routing

Host internal-*
  User deploy
  ProxyJump bastion.example.com

Trade-off: mọi traffic qua bastion, bastion trở thành SPOF và audit point; cần hardening riêng và logging.


scp / rsync qua SSH

rsync -avz -e ssh ./localdir/ user@host:/remote/path/

Lưu ý: trailing slash ảnh hưởng semantics, đọc man rsync mỗi khi copy tree quan trọng.


Agent forwarding -A

Tiện (dùng key trên laptop để git clone qua bastion) nhưng nếu bastion bị compromise, attacker có thể dùng forwarded agent. Chỉ bật khi cần và thoát session sớm.


Fail2ban / rate limit

Lớp bổ sung trên log, không thay thế key-only + firewall. Cẩn thận false positive khi NAT văn phòng chung IP.


Liên hệ bài trước / sau


Câu hỏi hay gặp

1. “Ed25519 hay RSA?”
Ed25519 ngắn gọn và hiện đại; RSA vẫn gặp trong legacy HSM, chọn theo constraint thực tế.

2. “Tôi đổi port SSH sang 2222 có an toàn hơn?”
Security through obscurity nhẹ, giảm scan noise nhưng không thay thế key/auth policy.

3. “Match User trong sshd_config?”
Hữu ích để policy khác cho git user vs admin user, đọc man sshd_config phần Match.


Bài tiếp theo trong loạt

Phần 11: Thời gian, timezone và logrotate, đồng hồ sai, log và TLS đều “lạ”.