6

我已经使用项目界面中的“点击部署”在 Google Compute Engine 上安装了 GitLab。几分钟后部署成功。我可以通过 SSH 进入实例,并按预期处理它。

我还可以使用 Web 界面登录 GitLab,并将 SSH 密钥添加到我的个人资料中。到目前为止,一切都很好。但是,当我尝试推送或拉取新的示例存储库时,我会收到以下消息:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我已经删除了我的本地 SSH 配置,所以它不会干扰。我需要设置某种 SSH 隧道吗?我错过了什么?

更新:清除我的本地 ~/.ssh 文件夹,并重新生成一个 SSH 密钥(我已在 GitLab 中添加到我的配置文件中)会产生以下错误:

Received disconnect from {GITLAB_IP_ADDRESS}: 2: Too many authentication failures for git
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

更新 2:似乎 GitLab 可能已经有了解决方案: run sudo gitlab-ctl reconfigure。见这里:https ://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#git-ssh-access-stops-working-on-selinux-enabled-systems

4

3 回答 3

8

您需要创建一个 SSH 隧道来与 GitLab 进行通信。

1. 以您的用户身份登录到您的开发服务器,并创建一个密钥。

ssh-keygen -t rsa

按照步骤操作,并创建一个密码(您可以记住),因为您需要它来从/向 GitLab 拉取和推送代码。

2. 现在您已经创建了密钥,我们可以复制它;

cat id_rsa.pub

复制该命令的输出(包括ssh-rsa),并将其添加到您的 GitLab 配置文件中。(http://my-gitlab-server.com/profile/keys/new)。

3. 确保您拥有项目的正确权限

确保您至少是角色开发人员。(角色截图:http: //i.stack.imgur.com/DSSvl.jpg

4. 现在,复制项目链接

进入你的项目,在右上角找到 SSH 链接;

在此处输入图像描述

5. 现在回到你的开发服务器

导航到您想要工作的目录,然后运行以下命令;

$ git init
$ git remote add origin <<project_url>>
$ git fetch

<<project_url>>我们在步骤 4 中复制的链接在哪里。

系统将提示您输入密码(这是您的 ssh 密钥密码,而不是您的服务器密码)并将主机添加到您的known_hosts文件中。之后,项目将开始下载,您可以享受开发。

我在一台装有 Digital Ocean 的 CentOS 6.4 机器上完成了这些步骤。但它们不应该与使用 Google CE 不同。

编辑

根据此评论引用Marty Penner的回答

解决了!感谢@sxleixer 和@Alexander Wenzowski 解决了这个问题。

显然,SELinux 干扰了 .ssh 目录的非标准位置。我需要在 Compute Engine 实例上运行以下命令:

sudo yum -y install policycoreutils-python # Install the `semanage` tool
sudo semanage fcontext -a -t ssh_home_t "/var/opt/gitlab/.ssh/authorized_keys" # Allow the nonstandard ssh_home_t

在这里查看完整的线程:

谷歌云引擎。权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic)

于 2014-10-17T14:37:03.540 回答
3

解决了!感谢@sxleixer@Alexander Wenzowski 解决了这个问题。

显然,SELinux 干扰了 .ssh 目录的非标准位置。我需要在 Compute Engine 实例上运行以下命令:

sudo yum -y install policycoreutils-python # Install the `semanage` tool
sudo semanage fcontext -a -t ssh_home_t "/var/opt/gitlab/.ssh/authorized_keys" # Allow the nonstandard ssh_home_t

在这里查看完整的线程:

谷歌云引擎。权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic)

更新:似乎 GitLab 可能已经有一个解决方案:运行sudo gitlab-ctl reconfigure。见这里:https ://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#git-ssh-access-stops-working-on-selinux-enabled-systems

于 2014-10-23T17:26:32.970 回答
0

在我的情况下,git 用户没有完全设置。如果您在日志文件中收到诸如“不允许使用用户 git,因为帐户被锁定”之类的消息(在 Centos 或 Redhat 下是 /var/log/secure),那么您只需通过“passwd -d git”激活用户

于 2015-10-21T15:07:52.723 回答