【发布时间】:2018-05-25 14:47:35
【问题描述】:
我有多个 ssh 密钥,一个项目使用一个密钥。我已成功将公共 ssh 密钥分配给我的 bitbucket 帐户中的相关存储库。
它们存储在以下位置:
~/.ssh/rsa_generic_repos
~/.ssh/rsa_generic_repos.pub
~/.ssh/rsa_project1
~/.ssh/rsa_project1.pub
然后我在尝试任何 git 访问之前将这些密钥添加到我的 ssh-agent:
ssh-add ~/.ssh/rsa_generic_repos
ssh-add ~/.ssh/rsa_project1
ssh-add -l - 显示:
4096 SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXX Generic Repo Key (RSA)
4096 SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXX Project 1 Key (RSA)
我的问题:
这可以正常工作(克隆 repo):
git clone git@bitbucket.org:Myusername/generic-repo.com.git
这不起作用:
git clone git@bitbucket.org:Myusername/project1.com.git
错误:
Cloning into 'project1'...
repository access denied. deployment key is not associated with the requested repository.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
如果我跑:
ssh-add -D
ssh-add ~/.ssh/rsa_project1
git clone git@bitbucket.org:Myusername/project1.com.git
它成功地克隆了以前不会克隆的 repo。这首先表明在 bitbucket 上正确设置了公钥,并且 ssh 守护进程没有尝试使用除第一个条目之外的任何 ssh 密钥,因此导致上述错误。
如果有人可以帮助我让 ssh 通过存储在 ssh-agent 会话中的所有密钥,我将不胜感激。
感谢您的帮助和时间。
【问题讨论】:
-
虽然 SSH 协议支持多个密钥,但它也可以在服务器端配置为只允许有限次数的登录尝试。如果位桶是这样配置的,它应该被改变。也许是支持票?
-
好主意,我已经使用 Bitbucket 创建了支持票证。我会在这里发回他们要说的话。
-
这就是你需要的gist.github.com/jexchan/2351996。阅读第一条评论。
-
为什么将这些密钥添加到特定的存储库而不是您的帐户?
-
@GustavMahler,如果你还是要把所有的钥匙放在同一个地方,你不妨在三个仓库中添加一个钥匙。使用 git,我以最少的原则创建服务帐户,因为每个部署密钥都是全局唯一的(我还没有开始理解这个选择) - 但如果可能的话,我会结合具有等效访问权限的实体。您的自动化总是可以创建一个专用代理并为每个项目设置 ssh 密钥。