Linux下如何彻底切换GitHub SSH用户?改全局配置仍显示旧用户
解决Git SSH连接仍使用旧用户的问题
核心原因
GitHub的SSH认证是基于本地私钥与平台上公钥的匹配关系,和git config --global设置的用户名/邮箱无关——后者仅影响提交记录里的身份信息,不决定SSH连接时的账号身份。你当前测试返回旧用户,说明SSH仍在使用对应旧账号的密钥。
解决方案
方案1:完全切换为新用户(替换全局SSH密钥)
如果不需要保留旧账号的SSH访问,直接替换默认密钥即可:
- 备份旧密钥:将
~/.ssh/id_rsa和~/.ssh/id_rsa.pub重命名(比如id_rsa_old、id_rsa_old.pub) - 将新的私钥和公钥放到
~/.ssh目录,并重命名为id_rsa和id_rsa.pub - 设置正确的文件权限(SSH对权限要求严格):
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub - 重新测试连接:
ssh -T git@github.com,此时应返回新用户的提示
方案2:保留多账号,通过SSH配置区分
如果需要同时使用新旧账号,通过~/.ssh/config配置不同的主机别名:
- 在
~/.ssh目录创建config文件(若不存在):touch ~/.ssh/config chmod 600 ~/.ssh/config - 编辑
config文件,添加新用户的配置(替换新密钥文件名为你的实际密钥名,比如id_rsa_work):Host github-work HostName github.com User git IdentityFile ~/.ssh/新密钥文件名 - 修改现有仓库的远程地址,将原地址中的
git@github.com:替换为github-work:,比如:git remote set-url origin github-work:新用户名/仓库名.git - 测试新账号连接:
ssh -T github-work,应返回新用户的认证成功提示
补充:确保提交记录使用新身份
如果需要让提交记录显示新用户信息,除了全局配置,还可以针对单个仓库单独设置(优先级高于全局):
git config user.name "新用户名" git config user.email "新邮箱"
内容的提问来源于stack exchange,提问作者dr_device
相关产品推荐
相关产品推荐

