Git Bash 是否通过 ssh 密钥确定身份?

2024-04-03

已经第三天了,我仍然无法解决以下问题:

我最初在 2 年前创建了一个 GitHub 帐户。我相信我为此帐户生成了 SSH 密钥。我相信我已将 ssh 密钥加载到我的 ssh-agent 程序中,然后将公钥放在我的 GitHub 帐户上。

现在我最近创建了一个新的 GitHub 帐户。我创建了一个存储库,然后将该存储库克隆到我的电脑上。进行几次提交后,我尝试将更改推送到存储库。但是,它指出我没有对该存储库的许可,并声明了类似“存储库的权限被拒绝 - oldusername 没有访问权限”的内容。因此,Git Bash 在尝试推送更改时似乎引用了我的旧用户名。

我尝试通过 'git config user.name' 等更改我的配置信息。但是,这似乎并没有解决问题。然后我偶然发现一些内容说明我需要 SSH 密钥。我进一步研究了这一点,并意识到我当前的 Git Bash 正在引用与我的旧帐户关联的 ssh 密钥。所以我删除了计算机上的这个旧密钥,同时也从我的旧 GitHub 帐户中删除了该密钥。

然后我继续生成一个新的 SSH 公钥/私钥对。我将(或者我相信)新的私钥加载到 ssh-agent 中。然后,我将公钥添加到我的新 GitHub 帐户中。请注意,我还将“密码”选项留空,因为我不明白它的直接目的。

在这些更改之后,我尝试将所做的更改推送到远程存储库。但是,我再次收到错误“oldusername 无权将更改推送到存储库”。

看来我的 Git Bash 仍在引用我的旧用户名。为什么是这样? Git Bash 是否使用 ssh-agent 加载的 ssh-key 来确定您的身份?如果是这样的话,为什么它仍然引用我的旧 GitHub 用户名?附注我使用的是 Windows 10,Git 2.9.3.2。

有什么想法吗?


我认为这里的关键是您使用 HTTPS 来克隆新存储库。

我怀疑您的凭据已被凭据帮助程序缓存。看这个:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-windows https://help.github.com/articles/caching-your-github-password-in-git/#platform-windows

在 Windows 上,如果您使用过 wincred 帮助程序 (git config --global credential.helper wincred),然后这会将您的凭据存储在 Windows 凭据存储中,该存储具有控制面板界面,您可以在其中删除或编辑存储的凭据。例如看这个:

通过此商店,您的详细信息将受到 Windows 登录的保护,并且可以在多个会话中保留。这是在 Windows 1.8.1.1 的 Git 中添加的。

所以要么:

  1. 尝试使用以下命令清除 https 克隆存储库的凭据缓存,然后重试:

    git credential-osxkeychain 擦除主机=github.com 协议=https

OR,

  1. 使用 Windows 控制面板的凭据管理器编辑凭据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git Bash 是否通过 ssh 密钥确定身份? 的相关文章

随机推荐