访问Bitbucket仓库时出现git ssh授权错误,多个密钥。
访问Bitbucket仓库时出现git ssh授权错误,多个密钥。
我有多个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)
我的问题:
这个命令可以正常工作(克隆存储库):
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
它成功克隆了之前无法克隆的存储库。这首先表明公钥在Bitbucket上设置正确,并且ssh守护程序没有尝试使用除第一个条目之外的任何SSH密钥,因此导致上述错误。
如果有人能帮我找到一种让SSH通过ssh-agent会话中存储的所有密钥的方法,我将非常感激。
感谢您的帮助和时间。
在访问Bitbucket仓库时出现git ssh授权错误的问题可能是由于以下原因导致的:
1. 当使用多个SSH密钥时,没有正确配置~/.ssh/config
文件。
2. 没有为每个仓库配置正确的身份验证信息。
解决方法如下:
1. 使用~/.ssh/config
文件来管理多个SSH密钥。在该文件中添加以下内容:
Host bbgeneric Hostname bitbucket.org IdentityFile ~/.ssh/rsa_generic_repos User git Host bbproject1 Hostname bitbucket.org IdentityFile ~/.ssh/rsa_project1 User git
2. 在使用SSH URL时,使用相应的主机别名来指定使用的密钥。例如:
bbgeneric:Myusername/generic-repo.com.git
bbproject1:Myusername/project1.com.git
通过这种方式,您可以轻松地使用多个SSH密钥访问不同的Bitbucket仓库。
感谢上述回答中提到的.ssh/config
配置方法,这使得管理多个SSH密钥变得更加简单。如果您需要更多帮助,可以参考这个链接:stackoverflow.com/questions/7927750/…。
这个问题的出现的原因是git ssh授权错误,当访问bitbucket repo多个密钥时。解决方法是在~/.ssh/config
文件中定义ssh别名,并将别名用于git命令中。以下是解决方法的详细步骤:
1. 打开~/.ssh/config
文件。
2. 添加以下内容:
Host bitbucket-generic-repos HostName bitbucket.org IdentityFile ~/.ssh/rsa_generic_repos Host bitbucket-project1 HostName bitbucket.org IdentityFile ~/.ssh/rsa_project1
这将为每个不同的bitbucket repo定义一个别名,并指定相应的IdentityFile。
3. 在git命令中用ssh别名替换bitbucket.org
。例如,将git clone git.org:<MyUsername>/project1.com.git
替换为git clone git-project1:<MyUsername>/project1.com.git
。
4. 重复上述步骤,为每个bitbucket repo设置正确的别名。
5. 保存~/.ssh/config
文件。
6. 运行git命令,确保不再出现授权错误。
通过按照以上步骤操作,可以解决git ssh授权错误,当访问bitbucket repo多个密钥时的问题。使用ssh别名可以简化命令,并确保正确的密钥被使用。同时,通过在~/.ssh/config
文件中添加User git
,可以在URL中省略git@
部分。这样可以提高操作的便捷性。