🔍 一、问题重现:SSH 连接码云失败
执行 ssh -T git@gitee.com 后返回关键错误:
git@gitee.com: Permission denied (publickey).
原因分析:
密钥未绑定码云账户:已为 GitHub 生成的 SSH 密钥未添加到码云的 SSH 公钥列表。
密钥路径未识别:Git 默认使用 ~/.ssh/id_rsa,若密钥名称或路径不同(如自定义命名),需手动配置。
文件权限问题:私钥权限过于开放(如 777)会导致 SSH 拒绝使用。
🔧 二、解决方案:配置独立密钥与多平台管理
✅ 步骤 1:生成码云专属密钥
ssh-keygen -t rsa -b 4096 -C "your_email@gitee.com" -f ~/.ssh/id_rsa_gitee
三次回车(默认无密码)
注意:-f 指定密钥路径,避免与 GitHub 密钥冲突。
✅ 步骤 2:添加公钥到码云
复制公钥内容:
cat ~/.ssh/id_rsa_gitee.pub
登录码云 → 设置 → SSH 公钥 → 粘贴并保存。
✅ 步骤 3:配置 SSH 多平台识别
编辑 ~/.ssh/config 文件(无则创建):
GitHub 配置(原有)
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
码云配置(新增)
Host gitee.com
HostName gitee.com
IdentityFile ~/.ssh/id_rsa_gitee # 指向新私钥
设置严格权限:
chmod 600 ~/.ssh/config ~/.ssh/id_rsa_gitee*
✅ 步骤 4:测试连接
ssh -T git@gitee.com
成功响应:
Hi 张三(@yang-yu521)! You've successfully authenticated...
⚠️ 提示 does not provide shell access 为正常现象,不影响 Git 操作。
⚙️ 三、进阶配置:解决高版本 OpenSSH 兼容性问题
若使用 OpenSSH 8.8+ 版本,可能因 RSA-SHA1 算法弃用导致密钥失效:
方案 1:强制启用 RSA-SHA1
在 ~/.ssh/config 追加:
Host gitee.com
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
方案 2:换用 Ed25519 算法
ssh-keygen -t ed25519 -C "your_email@gitee.com" -f ~/.ssh/id_ed25519_gitee
推荐方案 1(无需更换密钥),完成后重新测试连接。
🚀 四、本地仓库关联与推送
创建码云空仓库:
复制 SSH 地址(格式:git@gitee.com:用户名/仓库名.git)。
本地仓库关联远程:
git remote add gitee git@gitee.com:yang-yuqing521/repo.git
首次推送:
git push -u gitee master
若遇冲突,先执行:git pull gitee master --allow-unrelated-histories。
💎 五、避坑指南总结
问题现象解决方案Permission denied检查公钥是否绑定码云 → 修复私钥权限(chmod 600) → 配置 SSH 多平台。提交记录混淆项目目录内单独设置邮箱:git config user.email "gitee专用邮箱"。TortoiseGit 报错指定 SSH 客户端为 Git 自带 ssh.exe(路径示例:C:\Program Files\Git\usr\bin\ssh.exe)。Git 高版本兼容性问题启用 RSA-SHA1 或换用 Ed25519 密钥。
🌟 技术总结
通过为码云生成独立密钥、配置 SSH 多平台管理,并修复文件权限,可安全高效地实现双平台(GitHub + 码云)代码托管。核心要点:
密钥隔离:避免跨平台安全风险。
权限控制:私钥权限需为 600,配置文件权限为 600。
协议优先:始终使用 SSH 协议(非 HTTPS)关联远程仓库。
流程已验证通过,如有其他环境问题(如代理冲突),可参考 Git 代理配置指南 。
你的实践是技术进步的基石 ------ 每一次踩坑与突围,都在为更流畅的协作体验铺路。