我在Gitlab中有两个用户帐户。一个使用axmug用户,另一个使用GbFlow
当我使用axmug用户登录时,配置文件设置中有任何键。
但是,当我使用GbFlow用户登录时,我创建了一个SSH密钥文件,并且可以在配置文件设置中观看它。
我在Windows 7上使用Git Bash,当我键入cd /Users/Invitado/.sshls时,我可以观看三个文件:id_rsaid_rsa.pubknown_hosts
此项是使用axmug用户生成的。两个用户都有不同的电子邮件。

我想要做的是使用GbFlow用户上传一个Android项目。尝试时,我在Git Bash命令行中键入了以下内容:

git init
git remote add origin git@gitlab.com:GbFlow/GlobalFlow.git
git add .
git commit
git push -u origin master

除了最后一行:git push -u origin master,一切正常。此时,我显示了错误:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

我已经创建了密钥。我做错了什么?

最佳答案

Invitado表示这些ssh密钥是使用Guest帐户创建的。

如果您不是使用Guest登录的,而是使用您的实际帐户登录的,则ssh将在%HOME%\.ssh中查找那些键,并且HOME默认设置为%USERPROFILE%
键入set us以查看USERPROFILE的值。



这些密钥是使用哪个本地Windows帐户创建的。重要的是将公共(public)id_rsa.pub复制到的位置:哪个GitLab帐户。参见“How to create your SSH Keys

这就是GitLab无法正确验证您身份的第一个原因:将您自己的%USERPROFILE%\.ssh中的密钥移动到GbFLow身份中受益(假设GbFlow配置文件在其设置中具有公钥)。
输入ssh -T git@gitlab.com确认您被视为GgFlow

如果您需要使用相同的本地Windows帐户(Invitado或其他方式)管理两个不同的GitLab远程帐户,请参阅Working with non-default SSH key pair paths并使用%USERPROFILE%\.ssh\config文件。

# GbFlow
Host gbflow
Hostname gitlab.com
RSAAuthentication yes
User git
IdentityFile ~/.ssh/gbflow_rsa

# axmug
Host axmug
Hostname gitlab.com
RSAAuthentication yes
User git
IdentityFile ~/.ssh/axmug_rsa

然后使用ssh网址bgflow:<user>/<repo.git>axmug:<user>/<repo.git>
假设您已经创建了两组不同的ssh对密钥。

对于gbflow(重新命名现有的id_rsa / id_rsa.pub文件):
~/.ssh/gbflow_rsa
~/.ssh/gbflow_rsa.pub

对于axmug(带有ssh-keygen -t rsa -P "" -C "axmug GitLab access" -q -f ~/.ssh/axmug_rsa):
~/.ssh/axmug_rsa
~/.ssh/axmug_rsa.pub

08-27 21:17
查看更多