克隆仓库时公钥该添加到哪?别再搞混了

你是不是也遇到过这种情况:在公司新配的电脑上想克隆个代码,结果 git clone 一执行,弹出一句 Permission denied (publickey)。这时候才想起来,SSH 公钥还没配。

问题来了,这个公钥到底该加在哪?是加在本地?还是服务器?很多人一开始都会搞错位置,白白折腾半小时。

公钥不是加在你自己的电脑上

先说清楚,你生成的 SSH 公钥(通常是 ~/.ssh/id_rsa.pub~/.ssh/id_ed25519.pub 里的内容),不能只保存在自己电脑里就完事。它得让远程仓库“认识”你。也就是说,公钥要上传到你想要克隆的那个代码托管平台。

比如你在用 GitHub,那就得把公钥贴到 GitHub 账号的 SSH Keys 设置里;如果是 GitLab 自建服务器,那就进用户设置里的 Deploy Keys 或 SSH Keys 页面添加;公司内部用 Gitea 或 Gogs,路径也类似。

具体加在哪几个常见平台

GitHub 的路径是:右上角头像 → Settings → SSH and GPG keys → New SSH key。把公钥内容复制进去,类型选 Authentication,保存就行。

GitLab 类似:头像菜单 → Preferences → SSH Keys。注意有效期和标题别留空,方便以后管理。

自建 Git 服务器的话,可能需要手动把公钥内容追加到 ~git/.ssh/authorized_keys 文件里。比如:

cat ~/.ssh/id_rsa.pub | ssh user@your-server \"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys\"

这行命令的意思是,把你本地的公钥通过 ssh 发送到目标服务器的 git 用户家目录下,自动追加到授权列表里。只要权限设置正确,之后就能直接 clone 了。

验证是否生效

加完别急着 clone,先测试一下通不通。比如 GitHub 可以这样测:

ssh -T git@github.com

如果返回 Hi 后面跟着你的用户名,说明钥匙对上了。这时候再执行 git clone git@github.com:username/repo.git 就不会被拦住。

有些人图省事,一直用 HTTPS 方式克隆,每次输账号密码。但一旦项目多了,频繁输入不仅麻烦,还容易暴露凭证。用 SSH 配合公钥,一次配置,长期免密,才是正解。

下次换电脑或者重装系统,记得先把公钥配上,不然连仓库都拉不下来,卡在第一步干瞪眼。