微信优化

weixinyouhua

git公钥配置失败怎么办,git公钥配置教程详解

2026-10-19 19:41:56

git公钥配置的核心只有一句话:本地生成一对 SSH 密钥,把公钥填进 GitHub、GitLab 或 Gitee,私钥留在自己电脑,再用 ssh -T 验证。 做完这一步,克隆和推送就能少输密码。

配置前先分清公钥和私钥

公钥可以公开,私钥绝对不能外发

文件名怎么分辨

  • .pub 结尾的是公钥,id_ed25519.pub,用来交给代码平台。
  • 不带 .pub 的是私钥,id_ed25519,只能留在本机。
  • Linux 和 Mac 下,私钥权限建议设为 600,避免 SSH 直接拒绝使用。

一把公钥能配多个平台吗

可以,同一份公钥可以添加到 GitHub、GitLab、Gitee 等不同平台,但要注意,同一个平台里,同一公钥通常只能绑定一个账号,团队项目更推荐用 Deploy Key,而不是把个人密钥复制到服务器,据 GitHub 官方文档,SSH Key 用于免密认证;OpenSSH 手册也长期建议优先使用 Ed25519 这类现代算法。

GitHub git公钥配置步骤:从生成到验证

先看有没有旧密钥

打开终端,执行:

ls -al ~/.ssh

如果已经有 id_ed25519.pub,可以直接复制使用,没有就重新生成,不要随便覆盖旧密钥,否则可能影响正在用的仓库。

生成新密钥

ssh-keygen -t ed25519 -C "你的邮箱"

一路回车即可,想自定义路径,可以在提示时输入,系统会问是否设置 passphrase,设置了更安全,但每次使用可能提示输入。

启动 SSH agent:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

复制公钥并添加到平台

Windows 用 Git Bash:

clip < ~/.ssh/id_ed25519.pub

Mac:

pbcopy < ~/.ssh/id_ed25519.pub

Linux:

cat ~/.ssh/id_ed25519.pub

GitHub 路径是:Settings -> SSH and GPG keys -> New SSH key,标题随意写,Key 内容粘贴

git公钥配置失败怎么办,git公钥配置教程详解

.pub 文件里的全部文本,GitLab、Gitee 的入口类似,一般在 SSH Keys 或公钥管理页面。

验证连接

ssh -T git@github.com

第一次连接会问是否继续,输入 yes,看到 successfully authenticated 就说明配置通了。

然后检查 remote 地址:

git remote -v

如果是 https://github.com/...,改成 SSH:

git remote set-url origin git@github.com:用户名/仓库.git

Windows和Mac git公钥配置区别:路径、命令和权限

项目 Windows Mac/Linux
默认路径 C:Users用户名.ssh ~/.ssh
复制公钥 clip < 文件 pbcopy 或 cat
权限处理 一般由 OpenSSH 检查 常用 chmod 调整
agent Git Bash 里用 eval 通常随系统启动

Windows 建议用 Git Bash 操作,路径写成 /c/Users/用户名/.ssh 更顺手,Mac 如果频繁提示 passphrase,可以启用钥匙串:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

再在 ~/.ssh/config 里写:

Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

服务器上git公钥配置怎么操作:部署密钥与已知主机

服务器拉私有仓库,不建议把个人私钥传上去,更稳的做法是生成部署密钥:

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_deploy -C "deploy@server"
cat ~/.ssh/id_ed25519_deploy.pub

把公钥添加到项目里的 Settings -> Deploy keys,只给这个项目权限,默认只读,需要推送再勾选写入。

写入 known_hosts:

ssh-keyscan github.com >> ~/.ssh/known_hosts

git公钥配置失败怎么办,git公钥配置教程详解

配置 ~/.ssh/config:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_deploy
  IdentitiesOnly yes

测试并克隆:

ssh -T git@github.com
git clone git@github.com:组织/仓库.git

业内专家指出,生产服务器更适合 Deploy Key,而不是个人账号密钥,这样权限边界清楚,人员变动时也容易回收。

git公钥配置完了为什么还要输入密码:常见原因与排查

加载的密钥不对

ssh-add -l
ssh -vT git@github.com

-v 会显示实际使用了哪个私钥,没加载就执行 ssh-add。

remote 还是 HTTPS

git remote -v

显示 https://github.com/... 就不是 SSH,改成:

git remote set-url origin git@github.com:用户名/仓库.git

私钥权限或 passphrase 影响

Linux、Mac 下执行:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

如果设置了 passphrase,提示输入属于正常,多个密钥冲突时,在 config 里写清 IdentityFile 和 IdentitiesOnly yes。

git公钥配置国内网络失败怎么办?端口与代理思路

国内网络访问 github.com 的 22 端口,有时会超时,GitHub 官方支持 SSH over HTTPS,也就是走 443 端口。

先测试:

ssh -T -p 443 git@ssh.github.com

能通就写入 config:

Host github.com
  HostName ssh.github.com
  Port 443
  User git

也可以走本地代理:

Host github.com
  ProxyCommand nc -X connect -x 127.0.0.1:7890 %h %p

Windows 如果没有 nc,可以用 Git 自带代理配置,或安装 connect 工具,较大比例的连接失败来自端口封锁、DNS 解析异常或代理没走对,先换 443,再查代理和 DNS。

一台电脑管理多个代码平台:git公钥配置与多账号

git公钥配置失败怎么办,git公钥配置教程详解

为不同平台生成不同密钥

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github -C "github"
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_gitlab -C "gitlab"

config 示例:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github
  IdentitiesOnly yes
Host gitlab.com
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/id_ed25519_gitlab
  IdentitiesOnly yes

远程地址要匹配 Host,如果你写成 Host github-work,remote 也要用 github-work:组织/仓库.git。

企业团队里的权限习惯

  • 个人电脑用个人密钥。
  • 服务器用 Deploy Key。
  • CI/CD 用项目级 SSH Key,别复用开发者私钥。
  • 离职或轮换时删除旧公钥。

行业共识认为,密钥生命周期管理比一次配置更重要,配好只是开始,管好权限才能少出事。

git公钥配置并不复杂:生成密钥、上传公钥、验证连接、固定 remote。 把这四步做成清单,Windows、Mac 和服务器场景都能少踩坑。

git公钥配置常见问题Q&A

git公钥配置后克隆仓库仍然提示 Permission denied 怎么办?

先看公钥有没有加到当前账号或项目,再跑 ssh -T git@github.com,返回用户名是否正确,最后查 ssh-add -l、私钥权限、remote 是否 SSH 地址,多账号时检查 ~/.ssh/config 的 Host 与 remote 是否一致。

git公钥配置需要每次换电脑都重新生成吗?

推荐新电脑重新生成一对密钥,只把公钥加到平台,私钥不复制,复制私钥虽然能立刻用,但泄露风险高,也不利于设备级撤销,事实是:平台只认公钥,私钥始终留在生成它的设备上最稳妥。

git公钥配置和 HTTPS 加 Token 有什么区别?

SSH 用密钥对,HTTPS 用账号 Token,SSH 适合频繁推送,认证链路轻;HTTPS 更容易穿过企业防火墙和代理,两者都能拉私有仓库,选择取决于网络环境和团队规范,事实是:GitHub 已不再支持密码推送,HTTPS 必须用 Token,SSH 则依赖公钥。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待