您的位置:首页 > 运维架构 > Linux

2015-6-19-CentOS-6.5下搭建自己的Git服务器

2015-06-19 11:56 423 查看

0. 前言

想在自己的VPS上搭建一个Git服务器,这样可以避免拙劣的代码外漏,又可以利用版本管理的好处。在网上搜了几篇教程,然后开始踩坑,专业踩坑30年。

1. 参考教程及前方深坑

这一篇博文把参考教程列在文章里面,因为没有什么技术难度,主要是坑,所以记录一下踩到的坑。

搭建Git服务器 - 廖雪峰的官方网站

廖大大的这篇是百度出来排第一的,然而他推荐的是Ubuntu或Debian系的系统,而我的VPS是CentOS系统,yum与python之间纠缠不清的关系想必遇到过的人都懂。但也不是完全没参考价值,至少我知道了git服务器搭建大致需要哪几个步骤。

CentOS 6.5下Git服务器搭建

主要参考了这篇教程,前面一大片关于git的介绍不用管它,注意两个地方,一是这是服务端版的git,它是从源码编译安装的,版本号跟直接yum安装的git(客户端版git)不一样,二是它安装的gitosis.git地址好像不对,我访问时是403拒绝访问,用 https://github.com/tv42/gitosis.git 代替就好。

即便完全按照教程来,也可能会遇到第一个坑:gitosis无法安装,提示没有setuptools模块。然而无论你是查看pip还是查看whereis,都可以找到setuptools模块。

原因:我当时使用的是另一个账号登陆的,而setuptools模块是在root下安装的,这时候即便你用当前账号安装setuptools也会提示已经有了。

解决:切换回root账号再次运行安装就好了。

然后在生成了rsa密钥,导入的时候可能遇到第二个坑:

#sudo -H -u git gitosis-init < ~/id_rsa.pub


gitosis-init命令找不到。

这个只要将
gitosis-init
替换为它的绝对路径即可。

如果你是windows客户端,就会遇到我遇到的第三个坑:

在windows客户端使用git clone的时候,

Permission denied (publickey) fatal: Could not read from remote repository


原因:显然是权限问题,windows客户端的ssh好像是telnet的服务,即便有id_rsa私钥,也需要转换一下格式才能识别。然而光是这样还不够,还需要参考教程修改了SSH默认端口之后,如何配置git?中的ssh远端指定ssh访问端口。

解决:我用sourcetree的ssh助手导入id_rsa并且另存为了ppk格式的私钥,在plink中导入私钥之后,直接在sourcetree中新建仓库,远程地址写ssh://git@VPS_IP:port/gitosis-admin.git,成功发现并克隆仓库。VPS_IP和port换成你自己的。

注意,教程中客户端系统是CentOS,仓库中文件都是.开头的隐藏文件,但在windows下这些都不是隐藏文件了。以后配置vps git服务器的访问权限,只需要维护这个特殊的仓库就可以。教程后面是对这个仓库维护的示例,也可以单独搜索gitosis的相关文档。

现在我们已经克隆了权限管理仓库,该放在服务端的公钥、客户端的私钥也已经放好了,可以试着配置使用者。

按照教程配置好,先把管理仓库推送到远端(教程没有提到),然后试着建立自己的git-test仓库。

第四个坑出现了:推送失败,提示无权限。

看错误提示就知道它与第三个坑有联系,其实原因是一样的:默认连接是https,但是centos并不支持这么搞,需要指定访问方式为ssh。

解决:
git remote add origin ssh://git@VPS_IP:port/git-test.git


然后push就可以成功了。

以后只要在keydir下添加公钥,修改.conf文件,再推送到服务器,就可以添加新的用户了。新用户只要配置好相应的私钥,就可以直接访问有权限的仓库。

2. 深坑感言

别用windows

2015-07-17更新:

被OpenSSH和Putty的私钥坑得不行不行的,各种互不兼容。终于还是把gitosis搞坏了,于是全面迁移到gitolite。当然,不兼容的还是不兼容,真坑。

3. reference

搭建Git服务器 - 廖雪峰的官方网站

CentOS 6.5下Git服务器搭建

修改了SSH默认端口之后,如何配置git?

StackOverflow:’Permission denied (publickey) fatal: Could not read from remote repository’

CentOS升级Git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: