gpt4 book ai didi

git - 在终端上切换 Github 帐户时遇到问题

转载 作者:IT王子 更新时间:2023-10-29 00:57:58 24 4
gpt4 key购买 nike

我已经有一段时间没有将任何东西推送到 GitHub 上了。我最初是在我的电脑上设置我的帐户,一切都很好。然后我将我的帐户更改为客户的帐户(这样我就可以将代码推送到他们的私有(private)存储库)。

已经有一段时间了,现在我正在改回我的旧帐户,但遇到了麻烦。我生成了一个新的 rsa_key 并且几乎跟随 instructions here 到了 T。

但是,当我输入:ssh -T git@github.com 我得到:

您好旧的不正确的用户名!您已成功通过身份验证,但 GitHub 不提供 shell 访问。

我也无法推送到我的存储库,因为这个旧的客户端用户名未获得授权。我已经在我的计算机上和我在 GitHub 上的帐户设置上仔细检查了我的 ssh key 。

我还设置了全局帐户变量:

git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@youremail.com"
git config --global github.user username
git config --global github.token 0123456789yourf0123456789token

它仍然给我旧的用户名。

有什么建议吗?

谢谢,

最佳答案

问题是您的本地 ssh 仍在向 GitHub 提供您的“旧”SSH key 。当您在 ssh-agent 中加载了一个 GitHub 可识别的 key (即您的“旧” key )但想使用另一个 GitHub 可识别的 key (即您的"new" key )时,通常会出现这种情况).

ssh 按以下顺序提供 key :

  1. 已加载到代理中的指定 key
  2. 已加载到代理中的其他 key
  3. 未加载到代理中的指定 key

“指定键”是指由 -i 指定的那些键命令行选项或 IdentityFile配置选项(可以通过 ~/.ssh/config-o 命令行选项给出)。

如果您的“旧” key 已加载到代理中,但您的"new" key 未加载,则 ssh 将始终在之前提供您的“旧” key (来自第一类或第二类)您的"new" key (仅在最后一个类别中,因为它未加载),即使您使用 -i 指定"new" key /IdentitiesOnly .


您可以使用 ssh-add -l 检查您的 ssh-agent 中加载了哪些 key .如果列出了您的“旧” key ,那么您可以通过从您的代理中卸载它来解决问题(确保还卸载任何其他 GitHub 可识别的 key ,也许您的"new" key 除外):

ssh-add -d ~/.ssh/old_key_file

如果您使用的是 Mac OS X,系统可能会自动加载您的“旧” key ,如果您在提示输入密码时勾选了“记住我的钥匙串(keychain)中的密码”;您可以通过使用命令删除 key 的钥匙串(keychain)条目来禁用此自动加载
/usr/bin/ssh-add -K -d ~/.ssh/old_key_file .其他系统可能会做类似的事情,但告诉他们“停止那个”的命令会有所不同。


您可以设置 IdentitiesOnly 而不是从您的代理中卸载“旧” key yes 的配置选项, 告诉 ssh 跳过第二类 key (非指定代理加载 key )。你的~/.ssh/config可能包括这样的部分:

Host github.com
User git
IdentityFile ~/.ssh/id_rsa # wherever your "new" key lives
IdentitiesOnly yes

这样,您的代理中是否加载了任何其他 GitHub 可识别的 key 都无关紧要; ssh 将始终只提供您的"new" key 。

如果您预计需要访问两个 GitHub 帐户的存储库,并且不想在每次切换 GitHub 帐户时都必须编辑配置文件,那么您可以设置 ~/.ssh/config像这样:

Host clientname.github.com
HostName github.com
IdentityFile ~/.ssh/client_id_rsa # or wherever your "old" client key lives

Host github.com
IdentityFile ~/.ssh/id_rsa # or wherever your "new" key lives

Host github.com *.github.com
User git
Hostname github.com
IdentitiesOnly yes

然后使用类似 github.com:GitHubAccount/repository 的 URL用于您的存储库和 URL,例如 clientname.github.com:GitHubAccount/repository对于您的客户的存储库(如果您愿意,可以将 git@ 前缀放回原处,但这不是必需的,因为上述条目设置了 User 配置变量)。

关于git - 在终端上切换 Github 帐户时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com