Hướng dẫn cấu hình SSH client/server để giữ kết nối sống (keep-alive) – tránh bị ngắt khi nghỉ cà phê.
SSH server mặc định ngắt kết nối idle sau một thời gian (thường do firewall/NAT timeout hoặc cấu hình ClientAliveInterval). Giải pháp: cấu hình cả client và server gửi gói keep-alive định kỳ.
Cấu hình SSH Client (máy bạn) – Khuyến khích
Tạo/sửa ~/.ssh/config:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
TCPKeepAlive yes
- ServerAliveInterval 60: Gửi gói keep-alive qua kênh SSH mã hóa mỗi 60 giây.
- ServerAliveCountMax 3: Nếu 3 lần không nhận phản hồi → ngắt (tổng ~3 phút).
- TCPKeepAlive yes: Bật TCP keepalive (cấp transport) – bổ sung.
Lưu ý: Dòng ServerAliveInterval phải thụt lề (space/tab).
Cấu hình SSH Server (máy chủ từ xa) – Nếu bạn quản trị server
Sửa /etc/ssh/sshd_config:
ClientAliveInterval 60
ClientAliveCountMax 3
TCPKeepAlive yes
Khởi động lại SSH:
# systemctl restart sshd # hoặc /etc/init.d/ssh restart
Giải thích cơ chế
| Tham số | Phía | Chức năng |
|---|---|---|
ServerAliveInterval | Client | Client gửi gói SSH_MSG_GLOBAL_REQUEST keepalive@openssh.com mỗi N giây |
ClientAliveInterval | Server | Server gửi gói keepalive đến client mỗi N giây |
TCPKeepAlive | Cả hai | Bật TCP SO_KEEPALIVE socket option (cấp OS, không mã hóa, dễ bị firewall drop) |
Khuyên dùng cả hai phía để chắc chăn. Gói SSH keepalive đi trong luồng mã hóa – firewall/NAT thấy là traffic hợp lệ.
Giải pháp thay thế: Mosh (Mobile Shell)
Nếu mạng rất không ổn định (di chuyển, đổi IP, ngủ đông laptop), hãy dùng Mosh:
- Dùng UDP, đồng bộ trạng thái màn hình, hỗ trợ roaming IP, keep-alive tự động.
- Cài:
sudo apt install mosh/sudo dnf install mosh. - Kết nối:
mosh user@server(dùng SSH để xác thực, rồi chuyển UDP).
Screen/Tmux – Bảo toàn phiên làm việc
Kết hợp keep-alive với tmux hoặc screen: ngay khi SSH ngắt, session vẫn sống trên server – attach lại ngay.
# Trên server
tmux new -s work
# Hoặc attach session cũ
tmux attach -t work