之前有一台mac上面登录的是别人的账户,现在因为人才流动,这台电脑上的账户需要换成我的,这个时候UGIT和sourcetree都把账户切换了过来,但是脚本执行git命令的时候都会提示失败,这是因为旧密钥可能还在 ~/.ssh/ 目录里,SSH 可能会优先用它。
第一步:生成你自己的 SSH 密钥
不要用旧密钥,直接生成一对新的。在终端执行:
bash
ssh-keygen -t ed25519 -C "XXX@dobest.com"
一路按回车即可(除非你想设密码)。这会生成 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。
第二步:把新公钥添加到你的 GitLab 账户
查看并复制公钥内容:
bash
cat ~/.ssh/id_ed25519.pub
登录 GitLab 网页端(用你 XXX 的账户),进入 Settings → SSH Keys,把公钥粘贴进去保存。同时,建议你在同一个页面检查一下,删掉列表里属于孙爱良的旧 SSH Key(如果还在的话),防止残留。
第三步:让本机 SSH 使用新密钥,不再用旧密钥
旧密钥可能还在 ~/.ssh/ 目录里,SSH 可能会优先用它。你需要明确告诉 SSH:连接 code.xxxxx.com 时,只用你新生成的密钥。
编辑(或创建)SSH 配置文件:
bash
nano ~/.ssh/config
写入以下内容:
text
Host code.dobest.com
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
保存退出。IdentitiesOnly yes 是关键,它强制 SSH 只用指定的这把钥匙,不再乱试其他旧密钥。
第四步:清理全局 Git 署名(你之前已经看到了)
你的 user.name 还是 XXX,这个是对的,但确认一下邮箱也换成你的:
bash
git config --global user.name "XXX"
git config --global user.email "XXX@dobest.com"
第五步:验证并拉取
先测试 SSH 连接,看服务器现在认的是谁:
bash
ssh -T git@code.dobest.com
期望输出应该是 Welcome to GitLab, @XXX!(或你的显示名),而不是以前的旧名字。
确认身份正确后,回到仓库目录执行:
bash
git pull
补充:如果还有问题
如果 ssh -T 仍然显示旧用户,说明旧密钥还在被使用。可以检查 ~/.ssh/ 目录下是否有 id_rsa 等旧文件,将它们移走(比如 mkdir ~/.ssh/old_backup && mv ~/.ssh/id_rsa* ~/.ssh/old_backup/),再试一次。