Git SSH别名配置后无法切换用户,如何解决权限报错?

git操作求助!
ssh给github.com配置了两个别名,github-pccl和github-learn。但ssh连接只会使用第一次的连接用户,导致第二次会有权限报错
ssh config的配置如下:

# ucloud_pccl github
Host github-pccl
       HostName github.com
       User emma.bi@ucloud.cn
       IdentityFile ~/.ssh/id_rsa

# 163 github
Host github-learn
    HostName github.com
    User bipeishan666@163.com
    IdentityFile ~/.ssh/id_rsa_learn

现象如下:
第一次在仓库执行git fetch,走github-learn的配置;
删除known_hosts;
第二次另一个仓库执行git fetch,known_hosts文件没有重新生成,导致fetch会报错

ssh: Could not resolve hostname github-pccl: nodename nor servname provided, or not known
fatal: Could not read from remote repository

确认.ssh/id_rsa.ssh/id_rsa_learn配置是没有问题的

执行ssh -T git@github-pccl输出Hi bippeishan! You've successfully authenticated, but GitHub does not provide shell access
用户还是第一次的

做过以下尝试:

  1. 重启电脑
    git fetch 会重新生成known_hosts文件,使用新的配置
  2. 退出terminal,重新打开
    和上面一样的报错
  3. 清除git缓存:git credential-cache exit
    和上面一样的报错

期望结果:希望在删除known_hosts文件后,执行git fetch能重新使用新的配置生成known_hosts文件,而不需要重启电脑

阅读 848
avatarAI BotBETA

针对你描述的问题,主要涉及到SSH别名配置和Git远程仓库连接时SSH用户的识别问题。在你的SSH配置中,你已经为两个不同的GitHub账户设置了别名(github-pcclgithub-learn),但是Git在连接时可能没有正确地使用这些别名。这里有几个步骤和建议可以帮助你解决问题:

1. 检查Git远程仓库的URL

首先,确保你的Git仓库的远程URL使用了正确的SSH别名。你可以通过以下命令查看远程仓库的URL:

git remote -v

如果URL没有使用SSH别名(如github-pcclgithub-learn),你需要将其更改为正确的别名。你可以使用git remote set-url命令来更新URL,例如:

git remote set-url origin git@github-pccl:user/repo.git
# 或
git remote set-url origin git@github-learn:user/repo.git

2. 确保SSH别名在~/.ssh/config中正确配置

你的SSH配置看起来是正确的,但请确保没有语法错误(如多余的空格或缩进问题)。另外,请确保~/.ssh/config文件的权限设置正确(通常应该是600)。

3. 清理Git的SSH缓存

虽然你已经尝试清理了Git的credential cache,但还需要确保SSH客户端本身没有缓存旧的连接信息。你可以尝试完全删除~/.ssh/known_hosts文件,然后重新连接SSH以重新生成该文件。

4. 强制Git使用SSH别名

如果Git仍然不识别SSH别名,你可以尝试在Git命令中直接指定SSH命令,以确保使用正确的别名。例如:

ssh -i ~/.ssh/id_rsa_learn git@github-learn -T
# 或
git fetch origin ssh://git@github-learn/user/repo.git

但是,请注意,Git的fetch命令通常不接受这样的URL格式。这里的重点是展示如何显式地通过SSH命令连接到Git服务器。

5. 检查Git配置

确保Git的全局配置(如user.nameuser.email)与SSH别名配置的用户身份一致,尽管这通常不会影响SSH连接的权限问题。

6. 调试SSH连接

使用-vvv选项来运行SSH命令,以便获取更详细的调试信息,这可以帮助你了解连接过程中发生了什么:

ssh -Tvvv git@github-pccl

7. 重新生成SSH密钥(如果必要)

如果以上步骤都不能解决问题,你可能需要重新生成SSH密钥对,并确保它们与GitHub账户正确关联。

通过上述步骤,你应该能够解决SSH别名配置后无法切换用户的问题。如果问题依旧存在,可能需要更详细地检查你的系统配置或咨询更专业的技术支持。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏