githubssh-Tgit@github.com显示无处找到的旧用户名

githubssh-Tgit@github.com显示无处找到的旧用户名,git,github,Git,Github,git config--list显示了正确的新用户名(与全局用户名相同),以及正确的ssh推送/获取路径。但是如果我键入ssh-Tgit@github.com,我收到了我的旧用户名,但我目前没有使用它 我甚至检查了Windows凭据管理器并删除了所有凭据;还是一样的效果。这个老名字到处都找不到。我错过了什么 编辑: 它必须与ssh代理无法检索我的ssh密钥有关。如果我手动将ssh密钥添加到代理中,它就会工作。这就产生了两个问题: 1) 旧用户名来自哪里? 2) 为什么它不自动添加我的ssh密钥?

git config--list
显示了正确的新用户名(与全局用户名相同),以及正确的ssh推送/获取路径。但是如果我键入
ssh-Tgit@github.com
,我收到了我的旧用户名,但我目前没有使用它


我甚至检查了Windows凭据管理器并删除了所有凭据;还是一样的效果。这个老名字到处都找不到。我错过了什么

编辑: 它必须与
ssh代理
无法检索我的ssh密钥有关。如果我手动将ssh密钥添加到代理中,它就会工作。这就产生了两个问题:
1) 旧用户名来自哪里?
2) 为什么它不自动添加我的ssh密钥?它们位于$HOME/.ssh路径中,我将脚本添加到我的
.bashrc

EDIT2:多亏了李的问题,问题才得以解决。我可以回答出现的两个问题:
1) 旧用户名来自id\u rsa ssh密钥。
2) 仅当密钥的命名完全是id_rsa时,脚本才起作用。我误解了文档,认为$HOME/.ssh/mykey\u rsa也适用于脚本,但事实并非如此。

因此,如果有人偶然发现了这一点:删除(如果您仍然需要它,请保存/重命名)您的id_rsa,并创建一个新的id_rsa。这将解决问题。

您提到您正在使用Windows,因此以下是您需要遵循的步骤:

我们需要删除旧凭据:

$ git config --global user.name "Bob"
$ git config --global user.email "bob@example.com"
控制面板>>用户帐户>>凭证管理器>>Windows凭证>>通用凭证
删除您的GIT凭据

之后,您必须键入新帐户凭据:

$ git config --global user.name "Bob"
$ git config --global user.email "bob@example.com"

为了使这一点更加清楚和明确:

  • 请记住,这里至少涉及两台计算机:您的计算机(存储各种文件和设置的计算机)和GitHub的计算机。(GitHub使用多台计算机,但它们假装是一台计算机。)

  • 您的计算机通过Internet调用GitHub one,就像打电话一样。然后,您的计算机将提交某种形式的凭证。他们的电脑会检查这些凭证,并决定你是否是你声称的那个人

  • 您移交的凭据取决于您如何拨打电话。如果您使用
    https://...
    ,Git使用凭证管理器。每个操作系统都有自己的一组Git可以使用的凭据管理器,因此在Windows、MacOS、Linux等系统上,这里的过程非常不同。如果您使用
    ssh://...
    ,所有操作系统共享足够多的公共SSH代码库,因此在这一点上,它们都以几乎相同的方式进行操作,尽管仍然会出现特定于操作系统的项目

  • 因为您使用的是SSH,所以您交付的(单个,但请参见下文)凭证是您的SSH公钥(也使用加密,使用您的私钥,请参见示例)。您的ssh密钥存储在操作系统特定(且可配置)的位置。在您的特定情况下,它是
    $HOME/.ssh/id\u rsa.pub
    。末尾没有
    .pub
    的名称是私钥,这些密钥成对出现

    当GitHub收到您的密钥时,他们会在一个巨大的表中查找,表中保存着每个人给他们的所有密钥。你的钥匙与其他人的钥匙不匹配。您给他们的密钥在您给他们该密钥时有一个与之关联的用户名。由于只有您拥有此密钥(以及与之配套的私钥),GitHub现在可以确保您就是您刚才声称的那个人

    声明完全是通过这个公钥实现的。如果您不想再声称自己就是那个人,请移交另一个公钥。这必须在生成公钥/私钥对之后,以及使用
    ssh
    将您的计算机和Git与其Git连接到计算机之前发生

    这里有两件重要的事情需要注意,这使这个相对简单的画面变得复杂。同样,简化的图片是:有一个密钥对。您可以在GitHub上存储这一密钥对中的公钥。稍后,您的Git将通过
    ssh
    调用GitHub。您的
    ssh
    和他们的
    sshd
    交换一些数据。ssh使用密钥对中的两个密钥进行加密。他们现在知道您就是您,因为他们可以使用您的公钥副本匹配所有内容,并且只有您拥有能够解锁数据的私钥。
    但是您可能希望在您的计算机中保留多个密钥对,这会使一切复杂化

    为不同的收件人提供不同的密钥 common base ssh软件可以按顺序尝试各种密钥对。有关(多个且复杂的)详细信息,请参见下面关于多个关键点的部分。但是,您可以告诉它尝试一个特定的文件,使用
    config
    文件(
    $HOME/.ssh/config
    )根据要使用ssh连接的主机选择一个文件。例如,假设您希望所有到
    github.com
    的连接只使用存储在文件
    $HOME/.ssh/id\u rsa.github
    $HOME/.ssh/id\u rsa.github.pub
    中的私钥和公钥对。然后:

    Host github.com
        IdentitiesOnly yes
        IdentityFile ~/.ssh/id_rsa.github
    
    我会的。第一行,
    Host github.com
    ,告诉SSH下面的条目适用于名为
    github.com
    的主机的会话。(此处允许使用全局模式,因此,如果您的工作或学校或任何机构的主机名称与
    *.example.com
    匹配,则可以使用此类全局模式。)

    第二行,
    identiesonly yes
    ,覆盖通过ssh代理提供的标识。你可能想也可能不想这样做!如果您使用ssh代理提供身份,那么这会故意破坏(至少部分)代理提供的服务。详见下一节

    最后一行,
    IdentityFile path
    ,设置ke的名称