必须将ssh私钥路径写入.gitignore并从git索引中移除,确保私钥不被提交:先检查私钥位置,添加精确忽略规则,运行git rm --cached清除已跟踪项,再用git check-ignore和git ls-files验证生效,最后配置~/.ssh/config绑定绝对路径密钥并启用identitiesonly yes。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要把SSH私钥安全地存进项目里,又不能让它被Git提交到远程仓库——否则服务器就彻底裸奔了。这一步错不得,一旦泄露,攻击者能直接登录你的所有服务器。
确认私钥文件位置与命名规范
打开终端,执行:ls -la ~/.ssh/。重点检查是否有以 id_ 开头、不含 .pub 后缀的文件(如 id_ed25519 或 gitcode_id_rsa),这类就是私钥。公钥一定带 .pub 后缀,绝不能混淆。
如果你用的是自定义名称(比如 prod-server-key),确保它没出现在任何 Git 仓库根目录或子目录中——【私钥绝对不可出现在项目代码树内】。
将私钥路径写入 .gitignore
进入你的项目根目录,用文本编辑器打开 .gitignore 文件。
在文件末尾新增一行:~/.ssh/id_*。这条规则会忽略所有标准命名的私钥文件。
如果私钥被你存到了项目内部(例如 ./config/secrets/id_prod),必须加更精确的路径:config/secrets/id_prod。只写 secrets/ 不够,因为可能漏掉其他敏感文件。
保存文件后,在终端运行:git check-ignore -v config/secrets/id_prod。如果返回匹配行,说明规则生效;若无输出,说明该路径未被忽略,需修正规则。
验证私钥是否已缓存进 Git 索引
执行:git ls-files --cached | grep -i "id_"。如果有结果输出,说明私钥已被 Git 跟踪过,必须立刻清除。
清除命令:git rm --cached ~/.ssh/id_ed25519(替换成你实际的私钥路径)。这一步只从 Git 索引中移除,不删除本地文件。
再执行一次 git ls-files --cached | grep -i "id_",确认无任何输出。此时私钥才真正脱离版本控制视线。
设置 SSH 配置文件绑定密钥路径
方法一:使用标准 ~/.ssh/config
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
执行:mkdir -p ~/.ssh && touch ~/.ssh/config,然后用编辑器打开该文件。
写入如下内容(按实际替换主机名和密钥路径):
Host prod-server<br> HostName 192.168.10.5<br> User admin<br> IdentityFile ~/.ssh/id_ed25519
注意:IdentityFile 后面的路径必须是绝对路径,不能用 ~/ 缩写——OpenSSH 在某些环境下无法解析。
方法二:为多平台隔离密钥(推荐)
创建专用配置段:
Host gitcode.com<br> HostName gitcode.com<br> User git<br> IdentityFile ~/.ssh/gitcode_id_ed25519<br> IdentitiesOnly yes
【IdentitiesOnly yes 是关键】——它强制 SSH 只用指定密钥,不尝试默认密钥,避免误用或泄露。
测试连接并确认密钥未上传
第一步:运行 ssh -T git@gitcode.com。看到 Welcome to GitCode! 表示公钥已正确加载且连接成功。
第二步:执行 git remote get-url origin,确认 URL 以 git@gitcode.com: 开头,不是 https:// ——只有 SSH 协议才真正用上了你刚配的密钥。
第三步:最后检查一遍 GitHub/GitCode 等平台的 SSH 密钥管理页,确认列表里只有公钥(.pub 文件内容),绝无私钥痕迹。










