我在自己的域上有自己的gitlab设置。我一直在使用gitbash在我的Windows桌面上愉快地使用它。我一直在通过Gitlab Web前端创建repos,然后从我的本地机器上推送我的代码库,就像这样;
git remote add origin gitlab_user@my.gitlab.domain:my_namespace/my_repo.git
我也可以像这样克隆;
git clone gitlab_user@my.gitlab.domain:my_namespace/my_repo.git my_repo
在我的桌面上执行其中任何一项都没有问题。
如果我尝试从centOS框(也就是托管我的gitlab域的那个框)做同样的事情,虽然它可能并不总是如此)我被提示输入gitlab_user密码。在此之后,相同的clone命令告诉我my_namespace / my_repo.git似乎不是git存储库。我知道这是因为我从我的Windows机器上访问它没有任何问题。
当我从其他地方连接时,为什么它没有将它视为回购的任何想法,为什么要求输入密码?
答案 0 :(得分:3)
总之,确实是因为我没有将我的.ssh公钥添加到gitlab中的用户帐户。解决这个问题的步骤是:
ssh-keygen -t rsa -C "newuser@my.domain.com"
- (-C部分是一个评论,可以帮助我解决这个问题,如果我忘记的话。)cat ~/.ssh/id_rsa.pub
现在我可以使用原始命令进行克隆;
git clone gitlab_user@my.gitlab.domain:my_namespace/my_repo.git my_repo
我将始终最初以用户 gitlab_user 连接到我的gitlab服务器。但到达后,gitlab将通过将我的公钥与存储在其数据库中的其中一个帐户存储的公钥相匹配来识别我声称的用户帐户。 这就是为什么你不能将相同的.ssh密钥附加到多个gitlab帐户的原因 - gitlab在你连接时不会知道你是谁。
但是,您可以在一个帐户中放置多个(不同的)密钥。例如,我需要能够从家里和办公室访问repo,但每次都被识别为相同的gitlab用户。我这样做是通过在家创建.ssh键并将其添加到我的gitlab帐户,并在工作中做同样的事情。两个不同的键,将我识别为相同的gitlab用户。
答案 1 :(得分:1)
检查你的centOs~ / .ssh中是否有ssh密钥,但如果你没有,我不建议你复制windows%HOME /。ssh上的那些密钥。
生成一对新密钥,并在GitLab ssh配置页面中注册您的公共ssh密钥。
您可以在this gitlabhq-recipe script
ssh-keygen -q -N '' -t rsa -f ~/.ssh/id_rsa
我喜欢start with a key without a passphrase first:
ssh-keygen -t rsa -f "$HOME/.ssh/gitlab" -C "GitLab access (not interactive)" -q -P ""
但是对于非传统名称,我add a ~/.ssh/config file:
Host gilab
HostName my.gitlab.domain
User gitlab_user
IdentityFile ~/.ssh/gitlab
在这种情况下,我可以克隆:
,而不是克隆gitlab_user@my.gitlab.domain:my_namespace/my_repo.git
git clone gitlab:my_namespace/my_repo.git