Git GitLab 搭建遇到的两个问题 克隆和 push pull 需要输入用户名和密码,只能采用 http 方式

yutian · 2013年05月08日 · 最后由 king192 回复于 2016年06月09日 · 31576 次阅读

新搭建了 GITLab5.1,用的是 LDAP 登陆,粘贴了自己的公钥到 gitlab 上,目前可以克隆 pushpull 等操作,但只能用 http 地址 http://192.68.1.10/root/aaa.git 换为 ssh 地址 [email protected]:root/aaa.git 之后就会提示“fatal: The remote end hung up unexpectedly” ;更令人郁闷的是每次进行 push、pull、clone 时候都需要输入 ldap 的用户名和密码之后才能完成相应操作,求教给如何配置才能避免上面两个问题? @Saito @lgn21st @gene_wu

初步感觉是 git-shell 的问题 你 OS 是啥?如果是 ubuntu 的话,我大概能估到哪里的问题。

@leopku 系统用的是 ubuntu12.04

添加一个 .netrc 文件就可以避免每次都输入用户名与密码。

另外 SSH 的问题是配置问题,这个查阅各种 issues 应该可以解决。

  1. 确认 sidekiq 已经启动。
  2. gitlab-shell 的 config.yml 和 gitlabhq 的 gitlab.yml 看看配置有没有问题。
  3. 查看下 githost.log 文件,有没有什么错误信息。
  4. 查看 git 用户(默认)的 authorized_keys 有没有添加进你上传的 key。

@kenshin54 sidekiq 已经启动;authorized_keys 已经加入公钥;配置文件处理修改过 ldap 之外其他没有改动;没有找到 githost.log,其他日志里没看到错误信息;执行 sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production 所有的检查均通过

@Saito 创建了文件 netrc 内容如下: machine 192.168.1.80 login [email protected] password 123456 再次克隆的时候仍然需要用户名密码。 issue 和 gitllab 5.1 的 Setup Guide https://github.com/gitlabhq/gitlabhq/blob/5-1-stable/doc/install/installation.md 关于 ssh 的配置只有 gitlab-shell 中 Edit config and replace gitlab_url (with something like 'http://domain.com/') 这一项,求解

先测试一下 ssh -vv [email protected] 看看详细信息

如果报错信息为

gitlab-shell:8: undefined method `require_relative' for main:Object (NoMethodError)

可参照这篇博客第 3 节 http://www.himysql.com/ubuntu-12-04-lts-rvm-gitlab-5-redmine-integration.html

算了,帖过来吧

2013 年 4 月 26 日更新:

在.vimrc 的中找到『[ -z "$PS1" ] && return 』所在行,将下述第 3 行插入在该行前。完成后的代码如下:

$ vim ~/.bashrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session as a function

If not running interactively, don't do anything

[ -z "$PS1" ] && return Ubuntu 用户的若不设置该处,gitlab 搭建完之后 git 将出现 git-shell 错误、或连接 ssh 失败。

gitlab-shell:8: undefined method `require_relative' for main:Object (NoMethodError) 这是 git-shell 典型的错误信息。

折腾了几天终于解决了,大概总结了下: 1 最好系统安装的用户叫做 git,免得切换用户 2 升级安装(4.2-->5.1)的时候对 gitshell 版本检查
3 gitshell 的 config.yml 和 gitlab/config/gitlab.yml 还有 nginx 中配置的端口保持一致 4 使用 ssh -v [email protected] ssh -T [email protected] 检查自己的 key 是否被识别 5 git chckout 版本的时候 最好加上 -f 强制检出
6 每一步走完都确保是正确的 楼上提供的几个方案虽然没用上但是给了我一些启发,再次感谢。@leopku @Saito @kenshin54 @tuliang

#10 楼 @yutian 第 5 步好像从来没用过,gitlab

另外,安装的时候尽量按官方的安装文档来装 我安装的时候就用 rvm 安装 ruby 1.9.3,而官方文档是直接源码安装 1.9.3 结果就踩到坑了,后来在 issue 里蹲守,四月底一外国哥们在 issue 里回复才找到最终解决方案

#3 楼 @Saito 插楼问个问题,更新到 5.x 后 deploykey 只能用在一个 repo 上了

没有关注过这部分的情况.. 看下相关部分的 history 吧。

#12 楼 @jasl share deployment key 貌似在 5.2 的 roadmap 里面

#14 楼 @gene_wu 那就好了,这个功能还是很常用的

@Saito 请教 GitLab (5.2pre) push 或 clone 通过 SSH 方式始终失败,我已经把 SSH-public-key 导入进去了。试验了好多天都得不到解。请看如下的错误信息 :

这是哪里出了问题。 还请楼上的牛人大哥帮小弟看看,跪谢了!

#16 楼 @xuzan 编辑/etc/resolv.conf 新加一行: nameserver 202.106.0.20

此问题可解。

我之前也碰到类似问题,是使用了自定义的域名,当时采用的方法是指定 hosts 就 OK 了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号