3

我在自己的域上有自己的 gitlab 设置。我一直在我的 Windows 桌面上愉快地使用它,使用 gitbash。我一直在通过 Gitlab Web 前端创建存储库,然后像这样从本地机器推送我的代码库;

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 密码。在此之后,相同的克隆命令告诉我 my_namespace/my_repo.git 似乎不是 git 存储库。我知道这是因为我从 Windows 机器访问它没有问题。

任何想法为什么当我从其他地方连接时它没有将其视为回购,为什么它要求输入密码?

4

2 回答 2

3

解决方案

总之,这确实是因为我没有将我的 .ssh 公钥添加到 gitlab 中的用户帐户中。解决这个问题的步骤是;

  1. 作为我要克隆的用户,SSH 到我的 linux 机器上。为此,我专门创建了一个用户。
  2. ssh-keygen -t rsa -C "newuser@my.domain.com"- (-C 部分是一个注释,可以帮助我确定如果我忘记了这是谁的关键。)
  3. 使用cat ~/.ssh/id_rsa.pub
  4. 登录 gitlab(作为有权访问您要克隆的项目的用户)并通过粘贴您刚刚在步骤 4 中复制的公钥将此 ssh 密钥添加到帐户中。

现在我可以使用我原来的命令进行克隆了;

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 用户。

于 2013-09-04T15:38:28.673 回答
1

检查您的 centOs ~/.ssh 中是否有 ssh 密钥,但如果没有,我不建议您复制 Windows %HOME%/.ssh 上的密钥。

生成一对新密钥,并在 GitLab ssh 配置页面中注册您的公共 ssh 密钥。你可以在这个 gitlabhq-recipe 脚本
中看到一个例子

ssh-keygen -q -N '' -t rsa -f ~/.ssh/id_rsa

我喜欢先从没有密码的密钥开始

ssh-keygen -t rsa -f "$HOME/.ssh/gitlab" -C "GitLab access (not interactive)" -q -P ""

但是对于非常规名称,我添加了一个 ~/.ssh/config 文件

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
于 2013-09-04T12:55:25.020 回答