阿里云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 会话,尤其在执行耗时命令时(如编译、下载)。

解决方法:使用 screentmux 工具,保证断线后任务继续运行

安装 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