使用vscode远程ssh连接的时候,总是断开。 但是ping是没问题的

使用vscode远程ssh连接的时候,总是断开。 但是ping是没问题的

@TonyYan 这是典型的 SSH 空闲超时断开问题,ping 正常说明网络层没问题,是 SSH 会话层面的超时设置导致的。

解决方案

方案一:配置 VSCode SSH Keepalive(推荐)

在 VSCode 的 settings.json 中添加以下配置:

{
    "remote.SSH.keepAlive": true,
    "remote.SSH.connectTimeout": 60
}

操作步骤:

  1. Ctrl + Shift + P → 输入 Preferences: Open Settings (JSON)
  2. 添加上述配置项
  3. 重启 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连接总是连接超时

建议问题解决后回来更新帖子,帮助其他遇到同样问题的开发者。

一般是编译文件的时候断开
后添加交换分区的时候,也断开

91c471525d3929b07bdb84a749830f35

@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/configC:\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"

建议操作顺序

  1. 先做方案一:编译时限制 -j2,看是否改善
  2. 同时做方案三+四:调整 SSH 超时参数
  3. Swap 用方案二:分步创建,避免 IO 冲击
  4. 用方案五监控:确认内存是否足够

补充问题:

  • RDK X5 当前内存是多少?(2GB/4GB/8GB?)
  • 编译的是什么项目?(ROS2/感知算法/其他?)
  • 断开时 RDK 是否卡死,还是只是 SSH 断开但板卡正常?

建议先试方案一 + 方案三,通常能解决 80% 的编译断开问题。

如小助手,应该是CPU负载的问题