0

Mac OS (High Sierra) 在这里。我有一个 SSH 密钥,example-gh-user当我运行pbcopy < ~/.ssh/example-gh-user.pub并将其粘贴到编辑器中时,我看到:

ssh-ed25519 <SOME_REALLY_LONG_ALPHANUM> me@example.org

显然,出于安全原因,我用上面的虚拟值替换和的实际值。但一切看起来都很好。<SOME_REALLY_LONG_ALPHANUM>me@example.org

在 GitHub 上,我有一个用户,example-gh-user正在使用me@example.org电子邮件,我可以使用该用户登录并查看我的所有存储库。一切看起来都很好。

我已按照GitHub 指南向我的GitHub 帐户添加 SSH 密钥。example-gh-user因此,这个 SSH 密钥应该与我的 GH 帐户所关联的同一电子邮件地址相关联。

在我的~/.ssh/config文件中,我有以下条目:

Host example-dev
  Hostname   github2.com
  AddKeysToAgent yes
  IdentityFile ~/.ssh/example-gh-user

Host github.com
  User git
  Hostname   github.com
  AddKeysToAgent yes
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/example-gh-user

到目前为止,一切都很好,我想。

但是,当我从命令行运行以下命令时:

ssh -Tv git@github.com

我得到了大量的输出,有趣的是,结果如下:

debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
Hi my-old-gh-user! You've successfully authenticated, but GitHub does not provide shell access.
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 3452, received 2724 bytes, in 0.1 seconds
Bytes per second: sent 28403.1, received 22413.1
debug1: Exit status 1

看那个!my-old-gh-user!那是我多年没用过的GH用户!

SSH 和/或 git/GitHubmy-old-gh-user从哪里获取它?!SSH是如何缓存旧数据的?如果我了解一切如何正常工作,~/.ssh/config则清楚地指示 SSH在以用户身份~/.ssh/example-gh-user连接时使用,对吗?我哪里出错了?gitgithub.com

4

2 回答 2

1

如何知道当前最新的 some-service/client 版本是什么,以及如何更新 go.mod 以使用它?

简单地说go get github.com/SomeExampleOrg/some-service/client(假设原行仍在go.mod

这将更新go.mod到该存储库的最新版本,关于客户端的 go.mod 行将显示可用的最新版本。

如果该存储库是公共存储库,Go 将使用正常的 HTTPS URL,并且不需要您的 SSH 配置。


TheOP在讨论中提到

ssh -Tv git@github.com` generates the following output:

Hi my-old-gh-user! You've successfully authenticated, but GitHub does not provide shell access. 

my-old-gh-user是我多年未使用的老 GH 用户,并且必须为其配置 SSH。

SSH/GitHub 是从哪里获取 my-old-gh-user 的?

默认情况下,ssh 将查找~/.ssh/id_rsa( .pub)。如果那个旧的 public kay 注册到旧的 GitHub 用户帐户 SSH 配置文件设置(如GitHub所记录),那就可以解释为什么 SSH 默认使用旧的 GitHub 帐户识别您。

在您的新帐户中注册一个新的公钥,并确保用您的新密钥(或使用~/.ssh/config文件)替换默认公钥,SSH 将使用新帐户验证您的 k。

我生成了~/.ssh/example-gh-user

然后你需要添加到你的~/.ssh/config文件:

Host newgh
    HostName github.com
    User git
    IdentityFile ~/.ssh/example-gh-user

然后

ssh -Tv newgh

cd /path/to/repo
git remote set-url origin newgh:<me>/<repo>
于 2021-01-22T08:17:50.037 回答
1

这个有趣场景的答案在于 ssh-agent 的工作方式以及在 MacOS 的钥匙串上缓存身份(SSH 密钥)的方式。

您可以ssh-add -L获取所有当前加载的身份,其中您应该看到旧的 git ssh 用户的身份。

ssh-add -D您可以使用或ssh-add -d重新加载使用来刷新身份ssh-agent

eval "$(ssh-agent -s)"
ssh-add
于 2021-01-29T08:32:40.813 回答