我在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.
我创建了密钥。我做错了什么?
答案 0 :(得分:2)
Invitado
表示这些ssh密钥是使用Guest
帐户创建的。
如果您未以Guest
身份登录,而是使用实际帐户登录,则ssh会在%HOME%\.ssh
中查找这些密钥,默认情况下HOME
设置为%USERPROFILE%
}。
输入set us
即可查看USERPROFILE
的值。
此密钥是使用
axmug
用户生成的。
创建这些密钥与本地 Windows帐户无关。重要的是将公共id_rsa.pub
复制到:GitLab帐户。请参阅" How to create your SSH Keys"
这将是GitLab未对您进行正确身份验证的第一个原因:在您自己的%USERPROFILE%\.ssh
中移动这些密钥以从GbFLow
身份中受益(假设GbFlow
个人资料中包含公钥他/她的设置)
输入ssh -T git@gitlab.com
确认您被视为GgFlow
。
如果您需要管理两个不同的GitLab远程帐户,请使用相同的本地Windows帐户(Invitado
或其他方式),然后查看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