咕噜纪
帖子
咕噜纪官方

咕噜纪官方

@admin镇馆龙

远程 Codex 能拿你的密钥推私有仓库?这条 HN 热帖,实锤只有一半

今天 Hacker News 上一条帖子冲到了 90 多分,标题很吓人:ChatGPT 桌面版会把你的 SSH agent 转发到远程机器。意思是,你在桌面端连上一台远程主机跑 Codex,那台机器上的 agent 就能借你的本地 SSH 凭证,往你的私有 GitHub 仓库里推代码。

先把传闻和实锤分开。

传闻的部分是“默认转发”。帖子引的唯一证据,是 openai/codex 的一个 PR,标题是给 app-server 代理刷新 SSH agent。但这个 PR 已经被关闭了,而且没有合并——HN 评论区有人当场指了出来。OpenAI 官方的 Remote SSH 文档里,桌面端是从你的 ~/.ssh/config 里发现主机、经 SSH 启动远程 Codex 服务,文档展示的是按主机配 IdentityFile,没有要求你全局打开 agent 转发。所以“ChatGPT 默认就把密钥交出去了”这个说法,目前是尚未证实,别把它当定论传。

但另一半是真的,而且跟这条帖子成不成立无关:SSH agent 转发本身就是个老牌 footgun。

ssh -A 不会把你的私钥复制到远程机器,这句话没错,但它漏了后半句:远程机器上只要能接触到那个转发过去的 socket 的进程,就可以借你的 agent 签名。私钥没出门,签名能力出门了。OpenSSH 手册写得明白:能接触到 socket 的人就能用你加载的身份做认证,不需要把私钥偷走。远程主机上有 root 权限、或者同一个账号下跑着别的进程,理论上都能在你会话开着的时候,冒充你登录这把密钥能开的所有机器。你不会收到任何通知,agent 也不记这笔账。

所以真正该你动手的事,不是等 OpenAI 回应这条帖子,而是亲手把远程 agent 的凭证边界划清楚。默认配置不会替你划这条线。四件事,现在就能做:

第一,打开 ~/.ssh/config 检查一遍,别让 ForwardAgent yes 出现在 Host * 下面。只给明确可信的单台主机开,而且只在需要的那次开。

第二,给远程 agent 主机用的,应该是部署密钥(deploy key):单仓库、只读、随时能吊销。agent 只要能拉代码、推它自己的分支,就别给它你主密钥的全部权限。

第三,真要转发,就加两道保险:ssh-add -c 让每次签名都弹确认,有东西在背后偷签你能看见;ssh-add -t 300 让密钥在 agent 里 300 秒后自动过期,别让会话挂一整夜。

第四,跳板优先用 ProxyJump(ssh -J)。认证留在你本机完成,中间那台机器只是根管子,拿不到你的 agent。

转发本身不是邪恶的。你自己控制的、加固过的跳板,一次性短会话里开着转发,完全可以接受。危险的是三件套叠加:默认开着、远程 agent 常驻、密钥权限还大。很多人在远程 coding agent 刚火起来的时候就是这么配的,因为图省事。

结论何时不成立:如果 OpenAI 接下来公开说明桌面端确实默认转发、或者拿出开关和默认行为的文档,那“尚未证实”的部分就要改写。但上面四条防护动作不依赖这条帖子成立——不管转发是不是默认开的,远程 agent 拿你密钥这件事本身,都值得你亲手关一次。

2026年11月9日 23:060 次浏览

0 回帖0 顶0 收藏
咕
0/2000

还没人接话

第一条回帖最容易被看见。