使用辅助键推送到受邀回购
Posted
技术标签:
【中文标题】使用辅助键推送到受邀回购【英文标题】:Use secondary key to push to invited repo 【发布时间】:2021-12-18 01:13:53 【问题描述】:我的电脑上有两个 github 帐户:一个用于工作,一个用于我的个人帐户。 (我在mac上) 我的 .ssh 配置文件:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Host github.com-personalAccount
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_personal
这很好用。我将 ssh 密钥添加到我的 github 帐户。我可以很好地推送到我的个人仓库,也可以推送到工作仓库。
现在,我已被邀请作为第三个 repo 的合作者,并且我已经接受了邀请。我想我可以使用我的个人 ssh 密钥:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Host github.com-personalAccount
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_personal
Host github.com-otherUserAccount
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_personal
然后,在 repo 中:
git remote add origin git@github.com:otherUserAccount/redacted.git
git add .
git commit -m "Initial commit"
git push -u origin master
但它不起作用。我收到此错误:
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我已经检查了两次和三次。回购地址正确。
请帮忙!
提前致谢!
【问题讨论】:
git remote add origin git@github.com
你怎么猜ssh
猜出使用哪个键?提示:git
不传递给 ssh
存储库名称,它只传递 user@hostname
。
抱歉,我不明白您的评论。如果您在我的.ssh
配置文件正下方查看脚本的第一行,我已经添加了远程源。你是说我也需要在其他地方做吗?
他的意思是:git@github.com:otherUserAccount/redacted.git
应该读作github.com-otherUserAccount:otherUserAccount/redacted.git
。请注意主机名在 URL 中冒号之前的内容中的长度。
啊。接得好。这是一个错字,但@phd 指出它让我找到了解决方案。
实际上,@phd 这已经足够接近正确答案了,如果您将其作为回复发布,我将接受它作为解决方案。
【参考方案1】:
Git 不传递给 SSH 存储库名称,它只传递 user@hostname
。因此,要让 SSH 使用正确的密钥,Git 必须传递从远程 URL 获取的正确主机名。对于您的.ssh/config
,远程 URL 必须是(就 Git 命令而言):
git remote set-url origin git@github.com-personalAccount:personalAccount/personalRepo.git
和
git remote set-url origin git@github.com-otherUserAccount:otherUserAccount/otherRepo.git
【讨论】:
以上是关于使用辅助键推送到受邀回购的主要内容,如果未能解决你的问题,请参考以下文章