解决 VS Code Remote - SSH 连接失败问题:从权限问题到成功启动

引言

在使用 VS Code Remote - SSH 进行远程开发时,可能会遇到连接失败的问题。本文将详细记录如何从权限问题、文件系统挂载选项、AppArmor 配置等方面排查并解决问题,最终成功启动 VS Code Server 并建立连接。

问题描述

在尝试通过 VS Code Remote - SSH 连接到远程服务器时,遇到以下错误:

  • Permission denied:无法执行 VS Code Server 文件。
  • Failed to parse remote port from server output:无法解析远程端口。

问题排查与解决

1. 检查文件权限

首先,检查 VS Code Server 文件的权限:

ls -l /root/.cursor-server/cursor-316e524257c2ea23b755332b0a72c50cf23e1b00

确保文件具有可执行权限(-rwxr-xr-x)。如果没有,可以通过以下命令添加:

chmod +x /root/.cursor-server/cursor-316e524257c2ea23b755332b0a72c50cf23e1b00

2. 检查文件系统挂载选项

如果文件权限正确但仍然无法执行,可能是文件系统挂载选项的问题。检查 /root 文件系统的挂载选项:

mount | grep /root

如果输出中包含 noexec,则需要重新挂载文件系统:

sudo mount -o remount,exec /root

3. 将文件移动到可执行目录

如果重新挂载文件系统无效,可以将文件移动到 /tmp 目录,因为 /tmp 通常允许执行文件:

mv /root/.cursor-server/cursor-316e524257c2ea23b755332b0a72c50cf23e1b00 /tmp/
cd /tmp
./cursor-316e524257c2ea23b755332b0a72c50cf23e1b00 command-shell --cli-data-dir /cursor-server/cli --on-port --on-host=127.0.0.1

4. 检查 AppArmor 配置

如果问题仍然存在,可以检查 AppArmor 状态:

aa-status

如果 AppArmor 已启用,可以尝试临时禁用:

sudo systemctl stop apparmor

5. 使用非 root 用户

如果以上方法均无效,建议使用非 root 用户:

sudo adduser yourusername
sudo usermod -aG sudo yourusername
su - yourusername

然后重新尝试通过 VS Code Remote - SSH 连接。

最终解决方案

通过将 VS Code Server 文件移动到 /tmp 目录并执行,成功启动 VS Code Server 并监听在 127.0.0.1:44667。随后,VS Code Remote - SSH 成功连接到远程服务器。

总结

在解决 VS Code Remote - SSH 连接失败的问题时,需要从文件权限、文件系统挂载选项、AppArmor 配置等多个方面进行排查。通过逐步分析和尝试,最终成功解决问题并建立连接。


欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。

×

喜欢就点赞,疼爱就打赏

//