前言 这里我用的系统是centos 6.2,

在服务器上的准备工作(服务器IP为10.0.2.8 ):
1、安装 openssh服务器与客户端工具

[plain] view plaincopy
  1. $ sudo yum install openssh-server openssh-client

2、创建个人公钥和私钥(用于后面的git服务的管理员管理)
在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥

[plain] view plaincopy
  1. $ ssh-keygen -t rsa

默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥

[html] view plaincopy
  1. ssh-keygen -t rsa -b 4096

默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:

3、安装 git服务器

[plain] view plaincopy
  1. $  sudo yum install git-core

4、配置 git服务器
创建git服务器管理用户

[plain] view plaincopy
  1. $  sudo useradd -m git
  2. $  sudo passwd git

创建git仓库存储目录

[plain] view plaincopy
  1. $  sudo mkdir /home/git/repositories

设置git仓库权限

[plain] view plaincopy
  1. $  sudo chown git:git /home/git/repositories
  2. $  sudo chmod 755 /home/git/repositories

初始化全局设置

[plain] view plaincopy
  1. $  git config --global user.name "myname"
  2. $  git config --global user.email "myname@server"

5、安装python的setup tool

[plain] view plaincopy
  1. $  sudo yum install python-setuptools

6、获取并安装gitosis

[plain] view plaincopy
  1. $  cd /tmp
  2. $  git clone git://eagain.net/gitosis.git //测试时从这拿不到,可换成 git clone https://github.com/res0nat0r/gitosis.git
  3. $  cd gitosis
  4. $  sudo python setup.py install

7、配置gitosis

[plain] view plaincopy
  1. $  cp ~/.ssh/id_rsa.pub /tmp //上面第2步生成的公匙
  2. $  sudo -H -u git gitosis-init < /tmp/id_rsa.pub //将该公匙导入gitosis里,这时本机已经有了为git的管理权限了
  3. $  sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

为了git操作时不用输入密码,还要做以下配置

[plain] view plaincopy
  1. $  cat /tmp/id_dsa.pub >> /home/git/.ssh/authorized_keys //将root的公匙导入到git目录的 authorized_keys文件中
  2. $  chmod 600 /home/git/.ssh/authorized_keys

8、管理gitosis配置

[plain] view plaincopy
  1. $ cd ~
  2. $ git clone git@hostname:/gitosis-admin.git
  3. $ cd gitosis-admin/
  4. $ ls -al

看到以下结果

gitosis.conf是git仓库与权限配文件,keydir目录是存放其它客户机的公匙目录。

如果无法git clone的话,可以使用git clone git@xxx:/home/git/repositories/gitosis-admin.git
如果在git push的时候,遇到错误“ddress 192.168.0.77 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!”,解决为修改/etc/hosts文件,将ip地址与主机名对应关系写进去就可以了。
[plain] view plaincopy

  1. $  more gitosis.conf

gitosis.conf 对应的内容

[plain] view plaincopy
  1. [gitosis]
  2. [group gitosis-admin]
  3. writable = gitosis-admin
  4. members = root@localhost.localdomain

来这里git的服务已基本配置完毕,但要团队开发中用起来还要进以下配置:

在成员机(ip=10.0.2.100)上操上面第1与第2步生成自已的公匙,

[html] view plaincopy
  1. $  scp .ssh/id_rsa.pub root@10.0.2.8:~/gitosis-admin/keydir/tester.pub //将本机的公匙copy到gitosis的keydir中

再切换到git服务上(ip=10.0.2.8)

[plain] view plaincopy
  1. $  cd ~
  2. $  cd gitosis-admin
  3. $  cat keydir/tester.pub >> /home/git/.ssh/authorized_keys //将tester的公匙导入到git目录的 authorized_keys文件中
  4. $ vi gitosis.conf

修改gitosis.conf

[plain] view plaincopy
  1. [gitosis]
  2. [group gitosis-admin]
  3. writable = gitosis-admin
  4. members = root@localhost.localdomain
  5. #加一个组myteam
  6. [group myteam]
  7. members = tester #这里的tester对上面公匙文件名
  8. writable = test_project #项目仓库名

提交到版本库

[plain] view plaincopy
  1. $ git add keydir/tester.pub
  2. $ git commit -a -m "Allow tester write access to test_project"
  3. $ git push origin master

这时tester便有权限操作test_project仓库了,回到成员机(ip=10.0.2.100)上

[plain] view plaincopy
  1. $ cd ~
  2. $ mkdir test_project
  3. $ cd test_project
  4. $ echo "testing ">test.txt
  5. $ git init //初始化本地版本
  6. $ git remote add origin git@10.0.2.8:test_project.git //加到远程版本库中
  7. $ git add .
  8. $ git commit -a -m "哈哈哈,测试一下"
  9. $ git push origin master

也可以把上面的两步合成一步

$ git push git@xxx:project1.git master

说明:如果在执行 git push origin master 的时候,提示以下错误: error: src refspec master does not match any. error: failed to push some refs to 'git@192.168.0.77:pro2.git' 这是由于项目为空的原因,我们在项目目录里新创建一个文件。经过->add -> commit -> push 就可以解决了

$ touch a.txt
$ git add a.txt
$ git commit -a -m 'add a.txt'
$ git push

换个目录看能否clone回来

[plain] view plaincopy
  1. $ cd /tmp
  2. $ git clone git@10.0.2.8:test_project.git //此时应该不会提示输入ssh密码的

error: cannot run ssh: No such file or directory - cygwin git

”错误,则表示本机没有安装ssh命令。安装方法请参考:http://blog.haohtml.com/archives/13313 有时候我们要更换电脑来重新开发项目。这个时候,只需要将id_rsa私钥放在home目录里的.ssh目录里就可以了。(有时候一个人开发多个项目,这时候可能会提示id_rsa文件已经存在。不太清楚这里如何解决???)

常见问题

首先确定 /home/git/repositories/gitosis-admin.git/hooks/post-update 为可执行即属性为 0755

1. git操作需要输入密码

原因
公密未找到
解决
上传id_rsa.pub到keydir并改为'gitosis帐号.pub'形式,如miao.pub。扩展名.pub不可省略

2. ERROR:gitosis.serve.main:Repository read access denied

原因
gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub
解决
使keydir的名称与gitosis中members所指的名称一致。 改为members = foo 或 公密名称改为foo@bar.pub

转载于:https://www.cnblogs.com/breg/p/3675294.html

在centos 下安装配置基于gitosis 的git 服务相关推荐

  1. RHEL下安装配置基于2台服务器的MYSQL集群

    一.介绍 ======== 这篇文档旨在介绍如何在RHEL下安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽然这是基于2台服务器的 ...

  2. 版本管理工具:CentOS下安装配置Subversion Edge 5.2.4(svn 1.8)

    这篇文章介绍一下使用官方的Subversion Edge在CentOS下安装和设定的方法. CollabNet + VersionOne 强强联合 2017年8月7日,CollabNet和Versio ...

  3. 在CentOS下安装配置MySQL(转)

    今天刚把项目做完,需要马上部署到新到的测试服务器上,于是乎,要在服务器上安装环境,由于好久在linux上部署了,手有些生,比较费劲装完,现在把重要步骤贴出,供自己以后参照. 1.首先要看看有没有已经安 ...

  4. Centos下安装配置WordPress与nginx教程

    2019独角兽企业重金招聘Python工程师标准>>> 导读 WordPress是一个免费和开源网站和博客工具,使用PHP和MySQL. 它创建于2003年,并扩展到管理所有新创建的 ...

  5. centos 下安装配置nfs服务器

    1.环境 centos5.6_x64 iptables 关闭 selinux 开启(这个好像不影响) 服务端:192.168.10.150 客户端:192.168.10.152 2.安装 yum in ...

  6. linux php7 mongodb,CentOS 7下安装配置PHP7跟LAMP及MongoDB和Redis

    CentOS 7下安装配置PHP7跟LAMP及MongoDB和Redis 我是想能yum就yum,所有软件的版本一直会升级,注意自己当时的版本是不是已经更新了. 首先装CentOS 7 装好cento ...

  7. php7.4安装配置,CentOS环境下安装配置PHP 7.4的方法

    CentOS环境下安装配置PHP 7.4的方法 发布时间:2020-06-19 10:22:32 来源:亿速云 阅读:136 作者:Leah 本文给大家分享的是CentOS环境下安装配置PHP 7.4 ...

  8. linux nginx rpm 安装配置,Centos下安装nginx rpm包

    1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/centos/6 ...

  9. CentOS下安装及配置MySQL

    大家好,我是中国码农摘星人. 欢迎分享/收藏/赞/在看! 欢迎提出使用本篇文章安装 MySQL 时遇到的问题,本篇文章会持续更新- MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公 ...

最新文章

  1. mysql基础(九) 索引和视图
  2. vue2.0 子组件和父组件之间的传值
  3. CentOS 6.7 配置JSP运行环境之tomcat
  4. Eureka自我保护机制
  5. NIST 按行政令关于加强软件供应链安全的要求,给出“关键软件”的定义及所含11类软件...
  6. Petrozavodsk Winter-2018. Carnegie Mellon U Contest
  7. springboot缓存注解——@Cacheable和@CacheConfig
  8. Quartus II 12.0 下载、安装和破解
  9. python如何逐行读取文件_python怎么逐行读写txt文件
  10. 大话伊辛模型之一:源起
  11. vagrant给vmbox创建虚拟机及docker安装mysql和redis
  12. 学计算机高考英语听力考试时间,北京:2020年高考英语听力机考问答
  13. 1.9G的视频被压缩为64K
  14. 【Pytorch with fastai】第 11 章 :使用 fastai 的中级 API 进行数据处理
  15. 陈坤VS黄晓明:用大数据解读大明星
  16. 手机应用软件卸载【adb】
  17. 遇到程序员不修改bug时怎么办?我教你
  18. B4A 饺子播放器超简插件
  19. 【进程、线程和进程间通信】(三)进程间通信
  20. Java提取URL某个参数的值

热门文章

  1. 一键安装GitLab7在RHEL6.4上
  2. 中文分词器分词效果的评测方法
  3. python的设计模式之MVC模式
  4. Facebook开源工具包LASER,支持93种语言
  5. Algs4-1.5.4给出id[]和sz[]的内容与次数
  6. 使用packetbeat 采集mysql数据
  7. 利用dom4j取出XML文件中的数据
  8. Safari下弹窗问题的解决办法
  9. jQuery实例——展示表格点击变色、全选、删除
  10. 网上找到一个用不同颜色显示表格奇偶行的例子