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