我在Gitlab中有两个用户帐户。一个使用axmug
用户,另一个使用GbFlow
。
当我使用axmug
用户登录时,配置文件设置中有任何键。
但是,当我使用GbFlow
用户登录时,我创建了一个SSH密钥文件,并且可以在配置文件设置中观看它。
我在Windows 7上使用Git Bash,当我键入cd /Users/Invitado/.ssh
和ls
时,我可以观看三个文件:id_rsa
,id_rsa.pub
和known_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