什么“访问权限”可以阻止访问一个gitlab存储库?

我试图在新的干净的服务器上安装gitlab(6.5.1)。 一切似乎工作,但混帐无法推到任何项目。 按照新创build的项目页面的命令并通过ssh推送到远程:

$ git push -u origin master fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

这似乎是一个相当普遍的问题。 不幸的是,它似乎有一些潜在的原因,并没有一个似乎匹配。 从旧版本和其他各种来源的在线问题3424上,我已经看到并检查了以下build议:

  • 剩余的ssh密钥

    这是一个干净的设置,没有剩菜。 我的密钥已正确添加到授权密钥文件中,并且是唯一一个列出的密钥。

  • 使用debugging日志logging运行ssh显示与Ruby环境variables相关的错误。

    矿井干净。 SSHdebugging显示连接成功。 关于authentication握手的一切都是正常的,那么这就是输出的结尾:

     debug1: Sending command: git-receive-pack 'username/reponame.git' debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK 
  • gitlab-shell环境的问题。

    与上面相同错误信息的许多其他人不同,我的gitlab-shell检查脚本返回一个干净的健康状况:

     % sudo -u gitlab -H ~gitlab/gitlab-shell/bin/check Check GitLab API access: OK Check directories and files: /var/lib/gitlab/repositories: OK /var/lib/gitlab/.ssh/authorized_keys: OK Test redis-cli executable: redis-cli 2.8.5 Send ping to redis server: PONG 
  • 重新启动{独angular兽,sidekiq,redis}

    重新启动一个或多个服务的报告清除了这个似乎并不适用于此。 这并不是一个间歇性的问题,因为它解决了一个守护进程的问题。

  • 回购没有得到物理创build

    但它是。 每次第一次, ~gitlab/repositories/username/reponame.git的裸Git ~gitlab/repositories/username/reponame.git每次都被创build,并且似乎具有正确的权限。

  • Gitlab-shell不能与API服务器交谈,因为A)DNS问题,B)错误的IP /端口/接口绑定C)没有/有一个结尾的斜杠。

    检查脚本说API访问是好的。

    我没有运行nginx,所以与之相关的默认ip绑定问题是n / a。

    我已经尝试了两个*:8080127.0.0.1:8080unicorn.yml的监听值。

    除此之外,我尝试了各种迭代本地主机,127.0.0.1和完全合格的域名(这是DNS解决罚款),并没有在shell.yml斜线在shell.yml无济于事。 我也试着把它直接连接到端口8080上的独angular兽服务器,而不是端口80上的Apache SSL /代理主机。没有什么似乎有什么区别。 我的证书不是自签名的,对浏览器来说工作正常,但是我试着设置self_signed_cert: true 。 没有。

  • 报告的gitpath是错误的,从gitlab用户主页添加完全合格的path。

    这似乎是一个合法的build议,如果gitlabshell没有做一些猴子业务来纠正这一点,但我试着改变git remote add origin gitlab@server:username/reponame.git到“git remote add origin gitlab @ server :存储库/用户名/ reponame.git`无济于事。 同样的错误。

这似乎是build议的解决scheme,但他们都没有看起来是正确的。 注意我能够推翻http。 login提示接受我的LDAP用户名和密码,并接受推送。 这只是尝试使用SSH的一个问题。 用ssh -T gitlab@servertestingsshlogin部分工作正常。

还有什么可能导致这个错误?

如何在gitlab中debugging这样的问题?~gitlab/gitlab-shell/gitlab-shell.log似乎没有任何相关~gitlab/gitlab-shell/gitlab-shell.log 。 哪里可以find更多的信息错误信息?

    我敢肯定,由于这个SSHdebugging消息,你在SSH和系统之间有一个configuration问题:

     client_input_channel_req: channel 0 rtype [email protected] reply 0 

    您在validation成功后立即收到此消息,并且没有bash消息,这意味着login后没有启动程序。

    观察你的密码文件,如果你有正确的设置为gitlab用户:

     gitlab:x:1011:1012:GitLab,,,:/path/to/gitlab:/bin/bash 

    validationbash在configuration文件中没有奇怪的东西,比如

    • bash.bashrc
    • .profile文件
    • 的.bashrc

    然后进入uper级别:Gitlab-shellvalidation/path/to/gitlab/.ssh/authorized_keys具有以下configuration:

     command="/path/to/gitlab/gitlab-shell/bin/gitlab-shell key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa A... 

    与gitlab用户和可执行文件所拥有的/ path / to / gitlab / gitlab-shell / bin / gitlab-shell

    通过启动命令可以确保gitlab-shell完全运行:

     # /path/to/gitlab-shell/bin/gitlab-shell Welcome to GitLab, Anonymous! 

    如果远程login实际上正常工作并正确连接到gitlab-shell,那么如果尝试远程login,应该得到相同的欢迎消息(但是与用于login的ssh密钥相匹配)。

     $ ssh gitlab@server Welcome to GitLab, <your user's full name>! Connection to <server> closed. 

    这里没有任何信息可能表明ssh并没有把你连接到gitlab。

    最后,检查你的gitlab-shellconfiguration(config.yml)并validation是否:

     http_settings: # trailing slash is important gitlab_url: "https://remote_server/" ca_file: /path/to/webserver/certificate.crt 

    最终:

      self_signed_cert: false 

    我有这个问题,经过几天的谷歌search和堆栈溢出,我终于发现我的问题。 我想以书面forms将其与Gitlab连接,以防其他人出现同样的问题。

    我发现我的解决scheme在这里: https : //stackoverflow.com/questions/17307154/git-bash-push-to-bitbucket-ignores-ssh-key

    我在Windows上,问题是Git Bash试图从plink.exe得到它的SSH密钥位置,这是用Putty安装的。

    解决scheme是删除环境variablesGIT_SSH。 然后一切正常。

    希望这可以帮助那里的人。