使用vscode远程ssh连接的时候,总是断开。 但是ping是没问题的
@TonyYan 这是典型的 SSH 空闲超时断开问题,ping 正常说明网络层没问题,是 SSH 会话层面的超时设置导致的。
解决方案
方案一:配置 VSCode SSH Keepalive(推荐)
在 VSCode 的 settings.json 中添加以下配置:
{
"remote.SSH.keepAlive": true,
"remote.SSH.connectTimeout": 60
}
操作步骤:
Ctrl + Shift + P→ 输入Preferences: Open Settings (JSON)- 添加上述配置项
- 重启 VSCode
方案二:配置 SSH 客户端 Keepalive
编辑本地电脑的 SSH 配置文件 ~/.ssh/config(Linux/Mac)或 C:\Users\你的用户名\.ssh\config(Windows):
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
TCPKeepAlive yes
或者针对特定主机:
Host rdk-x5
HostName 你的RDK_IP
User your_username
ServerAliveInterval 60
ServerAliveCountMax 3
方案三:修改 RDK 端 SSH 服务端配置
如果上述方法无效,需要在 RDK 端修改 SSH 服务端配置:
# 在 RDK 上执行
sudo nano /etc/ssh/sshd_config
添加或修改以下参数:
ClientAliveInterval 60
ClientAliveCountMax 3
然后重启 SSH 服务:
sudo systemctl restart sshd
排查建议
如果问题依然存在,请补充以下信息:
- 断开前大概空闲多久?
- 使用的是有线网络还是 WiFi?
- RDK X5 的系统版本?
- VSCode Remote-SSH 插件版本?
相关参考: 社区有类似 SSH 连接问题讨论 → RDK X5使用ssh连接总是连接超时
建议问题解决后回来更新帖子,帮助其他遇到同样问题的开发者。
一般是编译文件的时候断开
后添加交换分区的时候,也断开
![]()
@TonyYan 明白了!问题不是空闲超时,而是资源密集型操作(编译、创建 swap)时 SSH 会话断开。这是典型的系统资源紧张导致 SSH 响应超时问题。
根本原因
编译和创建 swap 文件时:
- CPU 占用率飙升
- 内存/IO 压力大
- SSH 服务端响应变慢,客户端认为连接丢失
解决方案
方案一:降低编译并行度(立即生效)
# 不要使用 make -j 或 make -j$(nproc)
# 改为限制核心数,比如 2 核
make -j2
# 或者使用 cmake 时限制
cmake --build . --parallel 2
方案二:优化 Swap 创建方式(避免一次性占用)
你截图中的命令一次性创建 4GB swap,IO 压力太大。改为分步创建:
# 分 4 次创建,每次 1GB,减少 IO 冲击
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 && sudo mkswap /swapfile && sudo swapon /swapfile
sudo dd if=/dev/zero of=/swapfile2 bs=1M count=1024 && sudo mkswap /swapfile2 && sudo swapon /swapfile2
sudo dd if=/dev/zero of=/swapfile3 bs=1M count=1024 && sudo mkswap /swapfile3 && sudo swapon /swapfile3
sudo dd if=/dev/zero of=/swapfile4 bs=1M count=1024 && sudo mkswap /swapfile4 && sudo swapon /swapfile4
# 或者使用 fallocate 更快
sudo fallocate -l 1G /swapfile1
sudo chmod 600 /swapfile1
sudo mkswap /swapfile1
sudo swapon /swapfile1
# 重复 4 次
方案三:增加 SSH 服务端超时容忍度
在 RDK X5 上执行:
sudo nano /etc/ssh/sshd_config
添加/修改以下参数(比之前更激进):
ClientAliveInterval 30
ClientAliveCountMax 10
TCPKeepAlive yes
重启 SSH 服务:
sudo systemctl restart sshd
方案四:本地 SSH 配置增强
本地电脑 ~/.ssh/config 或 C:\Users\用户名\.ssh\config:
Host rdk-x5
HostName 你的RDK_IP
User your_username
ServerAliveInterval 30
ServerAliveCountMax 10
TCPKeepAlive yes
ConnectTimeout 30
方案五:监控资源使用情况
编译前打开监控,确认是否触发 OOM:
# 终端 1:监控内存
watch -n 1 free -h
# 终端 2:监控进程
htop
# 检查是否触发 OOM
dmesg | grep -i "out of memory"
dmesg | grep -i "killed"
建议操作顺序
- 先做方案一:编译时限制
-j2,看是否改善 - 同时做方案三+四:调整 SSH 超时参数
- Swap 用方案二:分步创建,避免 IO 冲击
- 用方案五监控:确认内存是否足够
补充问题:
- RDK X5 当前内存是多少?(2GB/4GB/8GB?)
- 编译的是什么项目?(ROS2/感知算法/其他?)
- 断开时 RDK 是否卡死,还是只是 SSH 断开但板卡正常?
建议先试方案一 + 方案三,通常能解决 80% 的编译断开问题。
如小助手,应该是CPU负载的问题