【发布时间】:2021-01-31 09:35:27
【问题描述】:
我有两个 GitHub 帐户(例如 personnel 和 work)。我将我的~/.ssh/config 文件配置为与multiple accounts 一起使用。我为work 帐户创建了ssh 密钥,并将公钥添加到我的work GitHub 帐户。
我创建了一个组织帐户并创建了一个私人仓库。我可以从我的work 帐户克隆/推送/拉到这个私人仓库。每次我推/拉我都需要输入我的密码,所以我添加了 ssh 密钥运行命令ssh-add ~/.ssh/id_rsa_work,我可以推/拉而无需一次又一次地输入密码。但问题是在运行ssh-add ~/.ssh/id_rsa_work 之后,我可以通过我的personnel 帐户克隆/推送/拉取这个私有存储库,我认为这是不应该发生的。
我不确定出了什么问题,但如果有人能指导我正确的方向并告诉我我做错了什么,那就太好了。如果需要,请随时询问相关信息(不是 git/GitHub 专家)
配置文件详情:
#Default GitHub (personnel account)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
#Work Github
Host github_work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
使用pesonnel账号添加远程的命令:
git remote add origin git@github.com:Organisation/hello.git
work 帐号:
git remote add origin git@github_work:Organisation/hello.git
【问题讨论】:
-
您应该使用
github-COMPANY作为主机名来代替文章中描述的github.com。任何时候都不要ssh-add。 -
@Ry- 是的。我确实使用
github-work(在我的情况下)作为主机名。在我运行ssh-add ~/.ssh/id_rsa_work之前,一切正常。我从gist 得到了这个想法。 -
SSH 将尝试身份验证代理 (
ssh-add) 中的所有密钥。这种行为是预期的。我建议通过 HTTPS 使用 Git 并使用 Git 的凭证管理器而不是通过 SSH 的 Git,因为 SSH 不知道您正在使用哪个存储库而 Git 凭证知道(使用git config credential.useHttpPath true)。 -
@ephemient “这是意料之中的行为”:奇怪!如果
personnel帐户未作为协作者添加到私人仓库,那么它永远不应该访问我所期望的那个仓库。 -
调试 ssh 问题:运行
ssh -v github-personnel你应该看到尝试了哪些键,以什么顺序。-vv和-vvv会给你更多的调试洞察力。
标签: git github ssh-keys git-push git-pull