VSCode的SSH Agent为何如此疯狂

VSCode's SSH Agent Is Bananas

VSCode的SSH Agent为何如此疯狂

我们想集成到VSCode的远程SSH编辑流程中,因为现在人人都用VSCode,尤其是那些用LLM生成代码的分支。LLM生成的代码在懂行的人手里很有用,如果能通过Agent闭环连接LLM和执行环境,那就更超实用了。但问题在于,你肯定不想让这种迭代开发过程在你的开发笔记本上跑,因为LLM有边界问题,它们会像处理Git项目一样,随意迭代你的系统配置。理想情况是,在干净的Linux实例上运行闭环Agent配置,瞬间启动且无法搞砸你的系统。Emacs的Tramp插件能灵活扩展远程环境,而VSCode却搞了一场全面入侵:它通过SSH端口转发运行一个Bash脚本,下载包含Node二进制文件的Agent,建立WebSocket连接回前端,能遍历文件系统、编辑任意文件、启动自己的shell PTY进程并持久化自己。在安全领域,这种工具有个名字,我就不明说了,但性质类似。这让我对让他人用VSCode远程编辑开发服务器感到紧张,如果在生产环境出事,那简直要崩溃。

  1. qwertox

    2026-09-24 09:35:24 dev ~ du -h -d 0 .vscode-server

    6.0G .vscode-server

    这才是让我觉得它疯狂的地方。如果微软允许这种情况,我真不知道他们在想什么。

  2. danielklnstein

    少了一个 (2025)。

    顺便提一下,VSCode 的 SSH Agent 对远程开发来说简直是救星——Fly 列出的那些“缺点”其实是它的优势。我在几个团队工作过,大家都广泛使用这个扩展,从来没出过问题。你可以随意限制 SSH 访问,以确保满足你所需的安全或访问护栏。

  3. 10000truths

    所以,一个专门设计用来在远程机器上编辑文件和运行任意命令的程序……确实能这么做。我不明白“疯狂”这个词是从哪儿来的。乍一看,通过 SSH/SFTP 发送二进制文件可能听起来有点怪,但 VSCode 不能假设你的远程机器能访问更广泛的互联网,它需要一个可靠的方式在远程启动 Agent。通过 SSH 隧道传输它是自然的解决方案。

  4. binlog

    这个 Agent 本应运行在远程开发机上。其目的是让远程机器成为你本地机器的扩展,用来运行扩展、容器、安装包、测试部署、端口转发等等。隧道传输是功能的一部分。如果你把它安装在生产服务器上,然后对其行为感到惊讶,那只能怪你自己。

  5. MajesticHobo2

    VSCode 架构的这一部分我可以接受。但反过来,如果远程机器被攻陷后能对我的本地机器为所欲为,那就不行了。

  6. xg15

    > The agent runs over port-forwarded SSH. It establishes a WebSockets connection back to your running VSCode front-end. The underlying protocol on that connection can:

    Wander around the filesystem

    Edit arbitrary files

    Launch its own shell PTY processes

    Persist itself

    等等,有人能澄清一下这里指的是哪台机器吗?

    在作者的设置中,他在开发笔记本上运行 VSCode(即前端),他希望这台机器不受 LLM 的直接访问。

    VSCode 通过 ssh 连接到一台专用的“沙箱”机器,LLM 在这台机器上可以(基本上)为所欲为。

    VSCode 用微软的方式实现了这一点:利用 ssh 连接在沙箱机器上安装 VSCode Server(即“后端”),并通过 websocket 连接与之通信。

    那么,会发生什么呢?如果 websocket 连接允许前端在沙箱机器上运行任意命令,这并不会让人太兴奋:前端已经有一个 ssh 连接和一个能做同样事情的大型服务器进程——而且沙箱机器的整个目的就是运行任意的、不受信任的命令而不造成危害。

    但文章说 websocket 连接是“返回到你正在运行的 VSCode 前端”。那这意味着事情是反过来的吗?也就是说,Agent/框架运行在沙箱机器的服务器上,但出于某种原因,它有一个 websocket 连接,也允许它在开发笔记本上运行任意命令?

    是这样吗?那真是疯狂至极!

  7. rurban

    我也在考虑是否要在我的服务器上禁止这些 vscode 反向 shell。开发者肯定会哭的。我认为本地 claude cli 实例没问题,但远程访问风险巨大。

  8. walrus01

    当我给一个 Agent 授予 SSH 访问权限时,我希望能够完全监视并理解它在做什么。我希望它本质上只是“输入”那些我自己也能输入的 CLI 命令,我能理解它在做什么,并且对结果不感到惊讶。根据我的经验,Opencode 加上一个聪明的 LLM(如 qwen 3.8-flash-next、deepseek v4 0731 或更高级的模型)在这方面做得相当不错。

同日更多故事

2026-09-23