我已经使用项目界面中的"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
您需要创建一个SSH隧道来与GitLab通信.
ssh-keygen -t rsa
按照步骤操作,并创建一个密码(您可以记住),因为您需要将密码从GitLab拉入/推送到GitLab.
cat id_rsa.pub
复制该命令的输出(包括ssh-rsa
),并将其添加到GitLab配置文件中.(http://my-gitlab-server.com/profile/keys/new).
确保您至少是角色开发人员.(角色的屏幕截图:http://i.stack.imgur.com/DSSvl.jpg )
进入你的项目,找到右上角的SSH链接;
导航到您要工作的目录,然后运行以下命令;
$ git init $ git remote add origin <> $ git fetch
<
我们在步骤4中复制的链接在哪里.
系统将提示您输入密码(这是您的密码密码,而不是服务器密码),并将主机添加到您的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
请参阅此处的完整主题:
Google Cloud Engine.权限被拒绝(publickey,gssapi-keyex,gssapi-with-mic)