Visual Studio Code(VS Code)是一款源代码编辑器,它提供扩展,让用户可以通过 Secure Shell(SSH)在另一台计算机上编辑文件;SSH 是一种用于经过身份验证的远程连接协议。Fly.io 于 2025 年 2 月发布的一篇文章考察了这项连接如何启动,并认为远程组件值得更仔细地审视。
文章将 VS Code 与 Tramp 作了对比;Tramp 是 Emacs 的扩展,会使用远程环境中可用的命令。Fly.io 指出,VS Code 则先部署一个 Bash 脚本,下载一个代理和 Node 的二进制安装,然后通过 SSH 连接运行该代理。作者表示,该代理会向用户计算机上的 VS Code 前端建立一个 WebSockets 连接——一种持久的双向 Web 连接。
这种设计并非本质上偶然。远程开发需要在目标计算机上安装软件,以便本地编辑器能够浏览文件、编辑文件、打开 shell 会话,并在那里运行其他扩展。实际上,连接到开发机器意味着授予编辑器的远程代理在该机器权限范围内行动的能力。同一机制可以支持测试或部署工作,但也让主机选择变得重要。
因此,Fly.io 的担忧涉及的是范围,而不仅仅是文件编辑:其提供的描述称,该协议可以遍历文件系统、编辑任意文件、启动 shell 伪终端,并使自身持久化。伪终端是一种交互式命令行会话。当目标机器是共享环境、包含敏感信息,或在事件响应期间使用时,这些能力最为关键;该文明确表示,对开发服务器和生产系统的担忧更大。
所提供的材料并未独立验证这些实现细节,也没有证明每个 VS Code Remote SSH 配置都具有相同风险。这是一家发布方对架构的解读,而读者提示正确指出,远程控制也是这项功能的目的,并且 SSH 访问可以受到限制。尚未解决的问题属于运维层面:主机是否是有意信任的开发环境,而不是远程编辑工具能否发出远程命令。
