在系统用户名为中文的情况下,生成公钥时可能会出现乱码或失败的问题。这是因为某些工具或命令行环境对中文字符的支持不够完善。以下是一些解决方法:
将生成公钥的路径更换为英文路径,然后我就更换路径为f盘创建。
ssh-keygen -t ed25519 -f "F:\git\ed25519"
然后成功生成公钥
但是在测试公钥的时候又出现问题了
问题1:计算机首次连接 GitHub,尚未信任其服务器密钥
解决: 验证 GitHub 的指纹
ssh-keygen -lf <(ssh-keyscan github.com 2>/dev/null)
输出正确显示:
256 SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU github.com
问题2:无法创建 known_hosts
文件
解决:手动指定 known_hosts
路径
set USERPROFILE=F:\git && ssh -T git@gitlab.com -i "F:\git\id_ed25519" -o UserKnownHostsFile="F:\git\known_hosts"
问题3:Permission denied (publickey)
错误。这说明 SSH 连接已建立,但 GitLab 拒绝了你的密钥认证。
解决:
1. 确认公钥已正确添加到 GitLab
步骤:
登录 GitLab → 点击右上角头像 → Preferences → SSH Keys。
将 id_ed25519.pub 的完整内容粘贴到 Key 框中,Title 可自定义。
点击 Add key。
验证是否添加成功:
返回 SSH Keys 页面,确认你的密钥出现在列表中。
2.启动 SSH 代理并添加私钥
在 Git Bash 或 Windows Terminal 中执行:
//启动 ssh-agent(后台运行)
eval $(ssh-agent -s)
//添加你的私钥(路径替换成你的实际路径)
ssh-add F:/git/id_ed25519
//回车后看到Enter passphrase for 直接输入你创建密钥时设置的密码,SSH 代理会加载该密钥,并在当前会话中记住它。
如果成功,会显示:
Identity added: F:/git/id_ed25519 (your_email@example.com)
测试 SSH 连接
运行以下命令测试 Gitee 连接:
ssh -T git@gitee.com
回车后看到:Are you sure you want to continue connecting (yes/no/[fingerprint])?时,输入 yes
(不是直接回车),然后按回车。
这会将 Gitee 的主机密钥存入 ~/.ssh/known_hosts
,之后不再提示。
正常会显示:
Hi <你的用户名>! You've successfully authenticated, but GITEE.COM does not provide shell access.
注意:这个方法是每次都需要手动启动 SSH 代理并添加私钥,再测试 SSH 连接!!!!!!
其他解决方法我还在探索,有更好解决办法的可以在评论区留言。
不要白嫖,点赞给鼓励吧