我试图在新的干净的服务器上安装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。
我已经尝试了两个*:8080
和127.0.0.1:8080
的unicorn.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@server
testingsshlogin部分工作正常。
还有什么可能导致这个错误?
如何在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文件中没有奇怪的东西,比如
然后进入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。 然后一切正常。
希望这可以帮助那里的人。