Google Compute Engine中的GitLab上的Git推/拉失败

时间:2014-10-17 14:23:44

标签: gitlab google-compute-engine gcloud

我已经使用" Click to Deploy"在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似乎已经有了解决方案:运行sudo gitlab-ctl reconfigure。见这里:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#git-ssh-access-stops-working-on-selinux-enabled-systems

3 个答案:

答案 0 :(得分:7)

您需要创建一个SSH隧道以与GitLab通信。

1。以用户身份登录开发服务器,然后创建密钥。

ssh-keygen -t rsa

按照步骤操作,并创建一个密码(您可以记住),因为您需要将密码从GitLab拉入/推送到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链接;

enter image description here

5。现在回到您的开发服务器

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

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

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

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

我在使用Digital Ocean的CentOS 6.4机器上完成了这些步骤。但它们与使用Google CE无异。

修改

根据Marty Penner

this comment回复引用

解决了!感谢@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

请参阅此处的完整主题:

Google Cloud Engine. Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

答案 1 :(得分: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

请参阅此处的完整主题:

Google Cloud Engine. Permission denied (publickey,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

答案 2 :(得分:0)

在我的情况下,git用户没有完全设置。如果您在日志文件中输入消息,例如“因为帐户被锁定而不允许用户git”(在Centos或Redhat下是/ var / log / secure),而只需要通过“passwd -d git”激活用户< / p>