阿里云2G服务器在使用SSH连接时,经常遇到连接中断的问题。经过排查,主要原因及对应解决方法如下:
1. 内存不足导致 SSH 进程被 kill
当服务器内存不足时,系统会优先 kill 占用资源较多的进程,包括 SSH 服务,导致连接中断。
解决方法:设置 Swap 虚拟内存
设置 Swap 的步骤
查看当前 Swap 情况
free -h
创建 Swap 文件(以2G为例)
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
设置开机自动挂载
编辑 /etc/fstab,添加一行:
/swapfile swap swap defaults 0 0
检查 Swap 是否生效
swapon --show
free -h
2. CPU 占用过高导致进程被 kill
高负载时,系统可能会 kill 占用 CPU 过高的进程或 SSH 会话,尤其在执行耗时命令时(如编译、下载)。
解决方法:使用 screen 或 tmux 工具,保证断线后任务继续运行
安装 screen 或 tmux
# 安装 screen
sudo yum install screen # 或 sudo apt-get install screen
# 安装 tmux
sudo yum install tmux # 或 sudo apt-get install tmux
使用方法示例
screen
screen -S mysession # 创建一个新会话
# 执行你的任务
# 断开连接: Ctrl+A 然后按 d
screen -r mysession # 恢复会话
tmux
tmux new -s mysession # 创建一个新会话
# 执行你的任务
# 断开连接: Ctrl+B 然后按 d
tmux attach -t mysession # 恢复会话
3. SSH 连接心跳包超时设置
当 SSH 连接长时间无操作或网络波动时,可能因心跳包超时而断开。
解决方法:调整 SSH 心跳参数
客户端配置
编辑 ~/.ssh/config,增加:
Host *
ServerAliveInterval 60
ServerAliveCountMax 100
服务端配置
编辑 /etc/ssh/sshd_config,增加或修改:
ClientAliveInterval 60
ClientAliveCountMax 100
修改后重启 SSH 服务:
sudo systemctl restart sshd