git配置ssh key的详细步骤其实就是一个生成密钥、添加公钥、本地验证的三步流程,整个过程五分钟内就能完成。 配置好之后,你就能摆脱每次推送代码都要输入用户名密码的烦恼,用SSH协议跟GitHub、Gitee、GitLab等代码托管平台安全通信。
为什么你必须搞定git key配置
很多开发者在本地仓库折腾半天,最后卡在push这一步。git配置ssh key的核心作用,是让本地Git客户端和远程仓库服务器之间建立一条加密的信任通道,与HTTPS方式每次都要验证账号密码不同,SSH Key用的是公钥和私钥的配对机制。
私钥留在你电脑上,相当于你的身份证;公钥上传到代码托管平台,相当于你提前在门卫那儿登记过,当你执行git push时,服务器用公钥验证你的身份,私钥则在本地完成签名,行业共识认为,SSH方式不仅更安全,还避免了频繁输入凭证的繁琐流程。
从事前端和后端开发的同事应该都有体会,配置完SSH Key之后,git pull和git push的体验会丝滑很多,尤其是需要频繁提交代码的高强度开发阶段,省下的时间相当可观。
git配置ssh key的详细步骤
第一步:检查本地是否已有SSH Key
打开终端(Windows用Git Bash,macOS用Terminal),执行以下命令查看是否已经生成过密钥:
ls -la ~/.ssh
如果看到id_rsa和id_rsa.pub这两个文件,说明你之前已经生成过密钥。id_rsa.pub就是公钥,可以直接使用,如果提示目录不存在或者没有文件,就进入下一步生成新的密钥。
第二步:生成新的SSH密钥对
执行下面这条命令,把邮箱替换成你注册代码托管平台时用的邮箱:
ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com"
系统会提示你选择保存位置,直接回车使用默认路径~/.ssh/id_rsa即可,接着会让你设置passphrase(口令),这个可以留空直接回车,也可以设置一个,区别在于每次使用私钥时是否需要输入口令。
生成过程中有一点值得关注: 如果之前生成过密钥,系统会询问是否覆盖,除非你确认要废弃旧密钥,否则不要输入y。
第三步:查看并复制公钥内容
执行命令:
cat ~/.ssh/id_rsa.pub
你会看到一串以ssh-rsa开头、以邮箱结尾的字符串,这就是你的公钥。使用鼠标从ssh-rsa到邮箱地址全部复制,不要遗漏任何字符,也不要多复制空格和换行。
第四步:在代码托管平台添加公钥
以GitHub为例,登录后点击右上角头像,进入

Settings → SSH and GPG keys → New SSH key,在Title栏填一个备注,我的MacBook Pro”,在Key栏粘贴刚才复制的公钥,点击Add SSH Key完成添加。
Gitee(码云)的操作路径是:头像 → 设置 → 安全设置 → SSH公钥,GitLab则是在Preferences → SSH Keys中操作,三者的基本流程一致,只是菜单位置略有差异。
第五步:验证连接是否成功
执行以下命令测试配置是否生效:
ssh -T git@github.com
如果是首次连接,会提示你是否确认主机的真实性,输入yes回车,看到Hi 用户名! You've successfully authenticated的提示,就说明整个git配置ssh key的详细步骤已经走通了,此时你执行git push就不再需要输入用户名和密码了。
git重新生成ssh key怎么操作
使用ssh-keygen命令强制覆盖旧密钥
最常见的场景是换电脑、密钥泄露或忘记口令需要重置。 重新生成的操作并不复杂,但有一点必须提醒你:重新生成后,必须去所有关联过的代码托管平台删除旧公钥,再添加新公钥,否则旧设备上的仓库会彻底失去访问权限。
执行覆盖生成命令:
ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com" -f ~/.ssh/id_rsa
-f参数指定了密钥文件的保存路径,执行后系统会询问是否覆盖,输入y确认,生成完成后,按前面说的方法复制新公钥并更新到平台上。
旧公钥备份与清理策略
重新生成前,如果旧密钥还有用,建议先备份整个.ssh目录:
cp -r ~/.ssh ~/.ssh_backup
考虑到安全因素,备份完旧密钥后,应该立即在所有平台删除旧公钥记录。 千万不要在公钥已经泄露的情况下继续使用旧密钥访问远程仓库,多账号场景下,还需要检查~/.ssh/config文件里的配置是否与新密钥匹配。
git key配置gitlab和github的区别
| 对比项 | GitHub | GitLab | Gitee |
|---|---|---|---|
| 添加路径 | Settings → SSH and GPG keys | Preferences → SSH Keys | 设置 → SSH公钥 |
| 密钥类型支持 | RSA、ED25519 | RSA、ED25519、ECDSA | RSA、ED25519 |
| 验证命令 | ssh -T git@github.com |
ssh -T git@gitlab.com |
ssh -T git@gitee.com |
| 企业自建支持 | 不支持 | 支持自建实例 | 支持私有化部署 |
git key配置gitlab和github的区别主要体现在验证域名和添加路径上

,密钥生成方式完全相同,如果你用的是公司自建的GitLab,需要把验证命令中的域名换成公司内部的GitLab地址,比如ssh -T git@gitlab.company.com,内网部署的GitLab通常走的是自签名证书,验证时可能会有指纹提示,确认无误后输入yes即可。
自建GitLab实例的管理员可能开启了限定密钥类型,这种情况下如果默认的RSA密钥不被接受,可以考虑用ED25519算法重新生成。ED25519密钥更短、生成速度更快,GitHub和GitLab最近几年都正式支持了这种密钥类型。
多账号与服务器场景下的git key配置
同一台电脑配置多个Git平台账号
如果你同时使用GitHub、Gitee和公司GitLab,就会遇到一个麻烦:默认的密钥文件只有一个,三个平台都想用,怎么处理?
解决方案是为每个平台单独生成一对密钥,然后通过配置文件指定不同域名使用不同密钥。
第一步,分别为每个平台生成密钥:
ssh-keygen -t ed25519 -C "github邮箱" -f ~/.ssh/id_ed25519_github ssh-keygen -t ed25519 -C "gitee邮箱" -f ~/.ssh/id_ed25519_gitee ssh-keygen -t ed25519 -C "gitlab邮箱" -f ~/.ssh/id_ed25519_gitlab
第二步,创建~/.ssh/config文件,写入以下内容:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github Host gitee.com HostName gitee.com User git IdentityFile ~/.ssh/id_ed25519_gitee Host gitlab.company.com HostName gitlab.company.com User git IdentityFile ~/.ssh/id_ed25519_gitlab
你的Git仓库远程地址会自动匹配对应的Host,从而使用指定的密钥文件,这里建议用ssh -T分别验证三个域名的连通性。
服务器上配置git key用于拉取私有仓库
简米云、酷番云或公司内网服务器上部署项目时,也需要配置SSH Key,否则git clone私有仓库会失败,操作流程是:在服务器上生成密钥对 → 将公钥添加到代码平台的部署密钥(Deploy Key)或账号中。需要留意的是,大多数平台的Deploy Key默认是只读权限,如果服务器需要推送代码,勾选写权限即可。
常见问题和排查思路
Permission denied (publickey) 报错
公钥没添加成功,或者本地用的是私钥文件验证身份,检查~/.ssh/id_rsa.pub内容是否完整复制,并确认已经添加到平台后台,执行ssh -vT git@github.com可以输出详细调试信息,定位卡在哪个环节。
验证连接时提示Host key verification failed
说明本地的known_hosts文件里没有对应服务器的指纹记录,或者服务器指纹发生了变化(比如GitLab重新部署),执行ssh-keygen -R github.com

清除旧记录,重新连接即可。
git push仍然提示输入密码
确认当前仓库的远程地址是SSH格式而不是HTTPS格式,执行git remote -v查看,如果是https://github.com/...开头,运行以下命令改成SSH地址:
git remote set-url origin git@github.com:用户名/仓库名.git
公司内网GitLab证书过期导致无法连接
内网自建GitLab的SSL证书过期是个高频问题,临时解决办法是在~/.ssh/config对应条目中加上StrictHostKeyChecking no,但这会降低安全性,长期方案是联系管理员更新证书,或者直接走HTTP协议,业内专家指出,出于安全审计要求,公司内部服务器不建议长期关闭主机密钥检查。
配置完成后如何验证整体流程
全部配置完成后,建议完整走一遍验证流程:
- 执行
ssh -T git@github.com确认认证通过 - 进入一个本地仓库,运行
git remote -v确认远程地址为SSH格式 - 修改一个文件,执行
git add、git commit、git push,观察全程是否不再要求输入账号密码 - 在新克隆一个仓库时,优先选择SSH协议的克隆地址
至此,你的git key配置已经完整落地。这套加密认证机制一旦投入使用,后续的代码推送和拉取流程将彻底告别密码输入,既节省了日常操作时间,也降低了凭证泄露的风险。
Q&A:git key配置相关高频问题
问:git配置ssh key用RSA还是ED25519算法更好?
答:优先选择ED25519。 它的密钥更短、生成速度快、安全性不低于RSA,GitHub、GitLab、Gitee在近几年的版本中都完整支持了ED25519,只有当公司自建GitLab版本较旧、不支持ED25519时,才回退到RSA 4096位密钥。
问:更换电脑后,原来的git key配置还能用吗?
答:不能直接使用,必须重新走一遍完整的git key配置流程。 新电脑上生成新的密钥对,把新公钥添加到代码托管平台,同时删除旧公钥,原来的私钥留在旧电脑上,如果旧电脑不再使用,无需额外操作;如果旧电脑还在使用,建议保留旧公钥一段时间,避免那边无法拉取代码,多台设备工作的情况下,把已有的~/.ssh目录整体拷贝到新电脑,也是一种拆机迁移的可行思路。
问:配置了ssh key之后,以前用HTTPS克隆的仓库怎么切换?
答:修改远程仓库地址即可。 执行git remote set-url origin git@github.com:用户名/仓库名.git将远程地址换成SSH格式,之后再执行git push就会走SSH认证通道,验证方式为执行git remote -v,看到远程地址以git@开头即表示切换成功,同一仓库的提交历史和工作区内容不会受到任何影响。
