跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Git怎么设置SSH密钥_Git配置SSH key免密登录教程【实战】

先检查 ~/.ssh/ 目录是否存在成对的私钥(如 id_ed25519)和公钥(如 id_ed25519.pub)文件,再优先生成 ed25519 类型密钥,添加公钥后需用 ssh-add 加载私钥并用 ssh -T -v 测试连接。 怎么判断本地有没有现成的SSH密钥 直接看
~/.ssh/
目录下有没有成对的私钥和公钥文件,这是最省事的起点。没这一步就盲目生成,容易多出几套密钥,后续反而混乱。 Linux/macOS:在终端运行
ls -al ~/.ssh
,重点找
id_rsa
和
id_rsa.pub
,或
id_ed25519
和
id_ed25519.pub
Windows(Git Bash):同样用
ls -al ~/.ssh
;如果提示“no such file”,说明目录都不存在,可以跳过检查直接生成 注意:哪怕只看到
id_rsa.pub
没有对应私钥,也不能用——公钥单独存在毫无意义,
id_rsa
才是真正参与认证的关键文件 生成密钥时该选 ed25519 还是 rsa 优先选
ed25519
,不是因为“新潮”,而是它更短、更快、抗侧信道攻击更强,且被 GitHub/Gitee 等主流平台完整支持多年。RSA 4096 虽然也够用,但属于“能用但不推荐”的选项。 生成命令用这个:
ssh-keygen -t ed25519 -C "your_email@example.com"
如果遇到老系统报错 “unknown key type ed25519”,再退回到
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
别用默认的 2048 位 RSA:
-b 2048
已被 NIST 建议淘汰,GitHub 自 2021 年起拒绝此类密钥 密码(passphrase)建议设一个——不是为了防别人偷你电脑,而是防你误把私钥文件发到公开仓库里;设了密码后记得配合
ssh-agent
,否则每次 git push 都输一遍很烦 添加公钥后为什么 ssh -T git@gitee.com 还报错 这是最常卡住的环节,报错未必是密钥错了,大概率是 SSH 客户端根本没用上你刚配的那把密钥。 Git 程序猿必备版本控制工具 下载 典型错误现象:
Permission denied (publickey)
或一直卡住无响应 先确认 Gitee 页面添加的是完整公钥内容——从
ssh-ed25519
或
ssh-rsa
开头,到邮箱结尾,**中间不能换行、不能少字符、不能带空格缩进** 测试命令必须加
-v
看真实过程:
ssh -T -v git@gitee.com
,输出里会明确写出它尝试了哪些密钥文件;如果看到
Offering public key: /home/xxx/.ssh/id_rsa
却没提
id_ed25519
,说明它压根没读你新生成的密钥 解决办法:运行
ssh-add ~/.ssh/id_ed25519
(或对应私钥路径),再试;如果提示 “Could not open a connection to your authentication agent”,先执行
eval "$(ssh-agent -s)"
HTTPS 改 SSH 后 git remote set-url 失败怎么办 改远程地址本身很简单,但失败往往是因为你复制了错误格式的 URL,或者当前远程名不是
origin
。 先查清当前远程名和地址:
git remote -v
,输出类似:
origin https://gitee.com/username/repo.git (fetch)
SSH 地址格式只有两种合法写法:
git@gitee.com:username/repo.git
(冒号分隔)或
ssh://git@gitee.com/username/repo.git
(斜杠分隔);
https://
开头的绝对不行,
git://
也不行 改地址命令:
git remote set-url origin git@gitee.com:username/repo.git
;如果远程名是
upstream
或其他,把
origin
换掉 改完立刻验证:
git ls-remote origin HEAD
,能打印出 commit hash 就说明通了;别等下次 push 才发现不对 最容易被忽略的一点:Gitee 和 GitHub 的 SSH 主机名不同,但密钥是通用的;你可以在同一台机器上同时配好
git@gitee.com
和
git@github.com
,只要公钥都上传了就行——但别指望用 Gitee 的私钥连 GitHub,那是两套独立认证体系。

相关文章