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

我正在尝试在一个干净的服务器上安装gitlab(6.5.1).一切似乎都有效,但是git无法推动任何项目.按照新创建的项目页面中的命令并通过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.

这似乎是一个相当普遍的问题.不幸的是,它似乎有许多潜在的原因,似乎没有一个匹配.从issue 3424发布旧版本和其他各种在线资源我已经看过并检查了以下建议:

>剩余的ssh键

这是一个干净的设置,没有剩菜.我的密钥已正确添加到授权密钥文件中,并且是唯一列出的密钥.
>使用调试日志记录运行ssh会显示与Ruby环境变量相关的错误.

我的清洁干净. SSH调试shows成功连接.关于身份验证握手的一切都很正常,那么这就是输出的结束:

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 eow@openssh.com 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

>重启{unicorn,sidekiq,redis}

重新启动一个或多个服务的报告清除了这一点似乎不适用于此处.这不是解除守护进程修复的间歇性问题.
>回购没有实际创建

但它是.每次第一次,每次都会创建~gitlab / repositories / username / reponame.git中的裸git repo,并且似乎拥有正确的权限.
> Gitlab-shell无法与API服务器通信,因为A)DNS问题,B)错误的ip / port /接口绑定C)没有/有一个尾部斜杠.

检查脚本说API访问很好.

我没有运行nginx,因此与此相关的默认ip绑定问题是n / a.

我在unicorn.yml中尝试了*:8080和127.0.0.1:8080的监听值​​.

除此之外,我尝试了localhost,127.0.0.1的各种迭代和完全限定的域名(DNS解析正常),在shell.yml中使用和不使用尾部斜杠都无济于事.我还尝试将其直接连接到端口8080上的unicorn服务器,而不是端口80上的Apache SSL /代理主机.似乎没有什么区别.我的证书不是自签名的,并且对浏览器工作正常,但我尝试设置self_signed_cert:true无论如何.没有.
>报告的git路径错误,从gitlab用户主目录添加完全限定路径.

这似乎是一个合法的建议,如果gitlab-shell没有做一些猴子业务来纠正这个,但我尝试改变git remote add origin gitlab @ server:username / reponame.git to“git remote add origin gitlab @ server :repositories / username / reponame.git`无济于事.同样的错误.

这似乎是所提出的一系列解决方案,但它们似乎都没有.注意我能够推过http.登录提示接受我的ldap用户名和密码并接受推送.这只是尝试使用SSH的问题.使用ssh -T gitlab @ server测试ssh登录部分工作正常.

还有什么可能导致此错误?

如何在gitlab中调试这样的问题?在~gitlab / gitlab-shell / gitlab-shell.log中似乎没有任何相关内容.哪里会找到更具信息性的错误消息?

最佳答案
由于此SSH调试消息,我很确定SSH和系统之间存在配置问题:

client_input_channel_req: channel 0 rtype eow@openssh.com reply 0

您在成功验证后立即收到此消息,并且没有来自bash的消息,这意味着登录后没有启动任何程序.

如果您对gitlab用户有正确的设置,请在passwd文件中查看:

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

验证bash在配置文件中没有奇怪的东西,例如

> bash.bashrc
> .profile
> .bashrc

然后上升到uper级别:Gitlab-shell
验证/path/to/gitlab/.ssh/authorized_keys是否具有以下配置:

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...

使用/ path / to / gitlab / gitlab-shell / bin / gitlab-shell由gitlab用户和可执行文件拥有.

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

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

如果远程登录实际上正在工作并正确连接到gitlab-shell,那么如果您尝试远程登录,则应该在转出之前获得相同的欢迎消息(但与您用于登录的ssh密钥匹配).

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

这里没有消息可能表示ssh根本没有将你连接到gitlab.

最后,检查你的gitlab-shell配置(config.yml)并验证是否:

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

并最终:

    self_signed_cert: false

转载注明原文:什么“访问权限”可以阻止访问gitlab存储库? - 代码日志