问题描述
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 guide on adding an SSH key 到我的 example-gh-user
GitHub 帐户。因此,此 SSH 密钥应与我的 GH 帐户关联的同一电子邮件地址相关联。
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/GitHub 在哪里寻找 my-old-gh-user
的来源?! SSH 是否缓存一些旧数据?如果我理解一切正常工作,~/.ssh/config
明确指示 SSH 在以 ~/.ssh/example-gh-user
用户身份连接到 git
时使用 github.com
,对吗?我哪里出错了?
解决方法
如何知道当前最新的 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
)。如果该旧公共 kay 已注册到旧 GitHub 用户帐户 SSH 配置文件设置(如 documented by GitHub),这将解释为什么 SSH 在默认情况下使用旧 GitHub 帐户识别您。
在您的新帐户中注册一个新的公钥,并确保用您的新密钥(或 use an ~/.ssh/config
file)替换默认的公钥,SSH 将使用新帐户对您进行身份验证。
我生成了 ~/.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>
,
这个有趣场景的答案在于 ssh-agent 的工作方式以及在 MacOS 的钥匙串上缓存身份(SSH 密钥)的方式。
您可以执行 ssh-add -L
来获取所有当前加载的身份,其中您应该看到旧的 git ssh 用户的身份。
您可以使用 ssh-add -D
或 ssh-add -d
刷新身份或使用以下方法重新加载 ssh-agent
:
eval "$(ssh-agent -s)"
ssh-add