【发布时间】:2016-09-02 13:46:09
【问题描述】:
这是第 3 天,我仍然无法解决以下问题:
我最初在 2 年前创建了一个 GitHub 帐户。我相信我为这个帐户生成了一个 SSH 密钥。我相信我已将 ssh 密钥加载到我的 ssh-agent 程序中,然后将公钥放在我的 GitHub 帐户中。
现在我最近创建了一个新的 GitHub 帐户。我创建了一个 repo,然后将该 repo 克隆到我的 PC 上。在进行了几次提交后,我尝试将更改推送到存储库。但是,它表示我没有对该存储库的许可,说明了“对存储库的许可被拒绝 - oldusername 没有访问权限”。所以看起来 Git Bash 在尝试推送更改时引用了我的旧用户名。
我尝试通过 'git config user.name' 等更改我的配置信息。但是,这似乎并没有解决问题。然后我偶然发现了一些东西,说我需要一个 SSH 密钥。我对此进行了进一步研究,并意识到我当前的 Git Bash 正在引用与我的旧帐户关联的 ssh 密钥。所以我在我的电脑上删除了这个旧密钥,我也从我的旧 GitHub 帐户中删除了这个密钥。
然后我开始生成一个新的 SSH 公钥/私钥对。我将(或者我相信)新的私钥加载到了 ssh-agent。然后我将公钥添加到我的新 GitHub 帐户中。请注意,我也将“密码”选项留空,因为我不了解它的直接目的。
在这些更改之后,我尝试将所做的更改推送到远程仓库。但是,我再次收到错误“旧用户名无权将更改推送到存储库”。
看来我的 Git Bash 仍在引用我的旧用户名。为什么是这样? Git Bash 是否使用 ssh-agent 加载的 ssh-key 来确定您的身份?如果是这种情况,为什么它仍然引用我的旧 GitHub 用户名?附:我使用的是 Windows 10,Git 2.9.3.2。
有什么想法吗?
【问题讨论】:
-
你重启代理了吗?
ssh-add -L将列出它知道的所有 ssh 密钥。如果它有您不期望的键,您可以使用ssh-agent -k停止它,然后使用ssh-agent重新启动它 -
你关闭了终端吗?也许它正在使用终端中的旧会话。
-
代理持续时间比终端会话长。您需要重新启动代理(或重新启动)。
-
@PaulHicks 所以我尝试了你的建议,甚至重新启动了计算机。我根本不知道 git 从哪里得到我的旧用户名。我是否正确,它使用 ssh 密钥来识别我?
-
当你克隆新的 repo 时,你使用了哪个协议? HTTPS 还是 ssh?