本文档记录在使用 Remote SSH 时可能遇到的问题并提供解决方法。

错误码

错误码错误内容解决方案
1001创建目录失败

可能是因为磁盘空间不足或无目录的写入权限。解决方案如下:

  • 检查磁盘剩余空间,确保有足够的空间用于创建目录。
  • 确保有 ~/.trae-cn-server 目录的写入权限。
1002创建目录失败同 1001 错误码。
1003远程主机上启动 TRAE 服务端失败检查远程主机的系统版本是否满足要求。
2001下载安装包失败检查网络联通性,然后重试。
2002解压安装包失败可能是由于安装包的下载过程被截断,导致下载的文件异常,重新安装后再尝试解压。
3001远程主机上启动 TRAE 服务端失败检查远程主机的系统版本是否满足要求。

连接超时问题

连接超时原因解决方案
服务器未启动,或网络无法连接

在本地终端执行 ssh <host> 测试远程连接:

  • 若连接失败:
  • 检查远程主机的 TRAE 服务端是否正常运行。
  • 确认网络连接无异常。
  • 若连接成功:继续排查其他潜在问题。
远程主机名称包含大写字母

部分 TraeCode 客户端版本存在兼容性问题:当 ~/.ssh/config 文件中远程主机名称包含大写字母时,可能导致连接超时。解决方案如下:

  • 升级客户端:将 TraeCode 客户端更新至最新版本。
  • 修改主机名:将配置文件中的主机名称全部改为小写字母。
不支持服务器的默认 shell目前,一些 shell 会导致连接异常,比如 fish。将用户的默认 shell 改成 bash 和 zsh 以解决该问题。
本地 ~/.ssh/config 文件位置变动如果挪动过本地的 ~/.ssh/config 文件的位置,可能会遇到这个问题。将 ~/.ssh/config 文件放回原先的位置以解决该问题。

若以上解决方案仍无法解决你的问题,可以通过《支持》中提供的渠道联系我们。请在问题反馈中提供以下信息,以便我们尽快定位问题并协助你解决:

  • TraeCode 截图(尽量截取完整的 TraeCode 界面图,以便我们分辨异常信息)。
  • 日志(从输出面板复制 Remote-SSH 相关的完整日志)。 Image=2034x434
  • 如果是连接超时问题,附上 ssh -vvv <host> 命令的完整输出结果,我们会根据此信息定位超时的原因。
    ssh -vvv test
    
    # 此处会输出大量日志,请复制完整的日志
    

网络问题

如果 AI 报告 997 错误,这通常表示你的服务器存在网络连接问题。

执行以下命令,确认你的服务器是否能成功连接到 TRAE 的服务:

curl -vvv "https://trae.cn"

如果以上 curl 命令在执行时报错,请先解决网络问题。

环境兼容性问题

在 Linux 上,可能会由于 GLIBC 问题导致进程无法启动。

问题现象

  • 你无法在对话面板中与 AI 对话。
  • 服务器端存在全局注入的动态库(如安全软件、监控组件,例如 /etc/thunder/libthunder.so)。

根本原因

TRAE 服务端为了保证在老旧系统上的兼容性,自带了一个较旧版本的 libstdc++.so.6。

当系统环境中有程序(或被强制注入的库)由新版编译器编译,并依赖新版 GLIBCXX 符号时,TraeCode 自带的旧库无法满足需求,从而导致加载失败。

解决方案

  1. 在 Linux 服务器上执行以下命令,检查是否存在 libstdc++ 版本冲突。
    grep -r "version \`GLIBCXX_.*' not found" ~/.trae-cn-server/manager-logs/
    
    如果命令输出类似以下内容,说明确实存在 libstdc++ 版本冲突,继续完成以下步骤来解决该冲突。
    .../libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /etc/thunder/libthunder.so)
    
  2. 找到 TRAE 服务端的安装目录。

    提示

    该目录通常在 ~/.trae-cn-server/bin/stable-<commit-id>-debian10/ 下。你也可以从报错日志中提取准确的路径。

  3. 重命名自带的 libstdc++.so.6:
    1. 进入 lib/trae-helper 目录(或报错日志中指示的包含 libstdc++.so.6 的目录)。
    2. 重命名自带的库文件。
    # 示例路径,请根据实际的路径调整
    cd ~/.trae-cn-server/bin/stable-*-debian10/lib/trae-helper/
    # 备份并重命名自带的库文件,迫使程序使用系统的 libstdc++.so.6
    mv libstdc++.so.6 libstdc++.so.6.bak
    
  4. 重启服务:
    1. 完全退出本地的 TraeCode。
    2. 重启 TraeCode。
    3. 尝试重新连接远程服务器。

如何使用 TraeCode 连接到 Devbox 启动的 Docker?

Image=600x103

若要在 Devbox(远程 Linux 开发机)上启动 Docker 容器,并在本地电脑的 TraeCode 中通过 Remote SSH 进入该容器进行开发,可以按照以下步骤操作。

提示

代码块中的内容为示例,你需要将粗体内容替换为自己的实际配置。

  1. 确保容器内已安装并启用 OpenSSH 服务。 如果基础镜像未包含 SSH 服务,可以构建一个支持 SSH 登录(root + 密码)的镜像:
    mkdir -p temp_docker
    cat > temp_docker/Dockerfile <<'EOF'
    FROM <your_image>
    RUN apt-get update && apt-get install -y openssh-server
    RUN mkdir /var/run/sshd
    RUN echo 'root:password' | chpasswd
    RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    EXPOSE 22
    CMD ["/usr/sbin/sshd", "-D"]
    EOF
    cd temp_docker
    docker build -t ssh01 .
    
    字段说明:
    • <your_image>:你的基础镜像(如 ubuntu:20.04)
    • root:password:容器内 root 用户的密码(后续用于 SSH 登录容器)
  2. 在 Devbox 上启动容器,并将容器的 SSH 端口映射到 Devbox 本机的端口。 以下命令中,容器的 22 端口(SSH)被映射到 Devbox 的 2222 端口。
    docker run -d -p 2222:22 ssh01
    
  3. 在本地电脑中,编辑 SSH 配置文件:
    ~/.ssh/config
    
    写入以下内容:
    Host devbox
        HostName 10.x.x.x
        User root
    
    Host docker-container
        HostName localhost
        User root
        Port 2222
        ProxyJump devbox
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null
    
    字段说明:
    • devbox:远程开发机(跳板机)
    • docker-container:运行在 devbox 上的容器
    • ProxyJump devbox:表示先连接 devbox,再从 devbox 访问 docker-container
    • HostName localhost:这里的 localhost 指的是 Devbox 本机(因为连接已跳转到 devbox 上执行)
  4. 在本地电脑的终端中,依次测试连接:
    1. 执行以下命令,测试 devbox 是否可被连接。password 为第一步中配置的密码。
      ssh devbox
      
      由于 devbox 是代理 SSH,因此必须首先确保 devbox 的 SSH 服务已正确配置并运行,且本地电脑到 devbox 的网络连接畅通。
    2. 执行以下命令,测试 docker-container 是否可被连接。
      ssh docker-container
      
      此时,会先连接 devbox,再连接 localhost:2222(即 devbox 上的容器)。使用的是容器中设置的 root:password。
  5. 在 TraeCode 中通过 Remote SSH 连接 docker-container,即可进入容器进行远程开发。详细步骤参考连接远程主机。