设为首页 收藏本站
查看: 906|回复: 0

[经验分享] CentOS 架设git完整版

[复制链接]

尚未签到

发表于 2015-10-30 13:14:15 | 显示全部楼层 |阅读模式
  Git 服务器搭建:
  http://www.iyunv.com/CentosServer/ftp/2014/0414/2789.html
  http://871421448.iyunv.com/blog/1912205
  http://weizhifeng.tumblr.com/post/25209375100/host-git-repositories-on-gitosis
  
  1. 环境部署
  系统环境:服务器端:CentOS 6.5 ,ip:172.20.48.15
  客户端:CentOS 6.5 ,ip:172.20.48.18
  软件版本:服务器端:源码编译安装,git-1.9.0.tar.gz
  客户端:yum在线安装机制
  
  2. 安装  (服务器端)
  安装git
  #yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
  #Wget : http://distfiles.macports.org/git/
  #tar zxvf git-1.9.0.tar.gz
  #cd git-1.9.0
  #make prefix=/usr/local all
  #make prefix=/usr/local install  #root用户运行
  查看版本号:git --version
  git version 1.9.0
  
  安装gitosis
  gitosis为Git用户权限管理系统,通过管理服务端的/home/git/.ssh/authorized_key文件来执行对用户权限的管理,是一个python模块包
  #yum install python python-setuptools
  #git clone git://github.com/res0nat0r/gitosis.git
  #cd gitosis/
  #python setup.py install
  显示Finished processing dependencies for gitosis==0.2即表示成功
  
  
  安装 git ( 客户端 ):
  #yum install git
  #git --version
  git version 1.7.1
  
  
  3. ssh设置  (client秘钥 , server 公钥)
  Client:
  #scp ~/.ssh/id_rsa.pub   root@192.168.56.1:~/
  Server
  #ssh-keygen -t rsa
  # cp  id_rsa.pub  /tmp/
  
  4. 服务器上生成git用户
  添加用户git:
  #useradd  -d /home/git git
  #chown git:git /home/git
  
  修改PATH,使git用户可以调用git:

vi /home/git/.bashrc
PATH=/usr/local/bin:/usr/local/git/bin:$PATH

  
  在服务器端生成管理库 : (用来初始化 gitosis )
  方式1: (client 公钥生成管理库)
  #sudo -H -u git gitosis-init < ~/id_rsa.pub
  Initialized empty Git repository in /home/git//repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
  注解:
  1. 生成的gitosis-admin为Git的用户访问权限管理库,gitosis通过这个git库来管理所有git库的访问权限。
  2. 通过执行初始化,该公钥的拥有者就能修改用于配置gitosis的那个特殊Git仓库了
  修改上传权限:
  #chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
  
  
  方式2: (server 公钥生成管理库)
  $ su git # 切换倒git用户下
  $ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub
  
  方式3: 简单命令生成管理库:
  git init –bare test.git
  
  5.获取并配置gitosis-admin 管理端(server端-----client端)
   Server 端 只可以 clone server 公钥生成的管理库
   Client 端 只可以 clone  client 公钥生成的管理库
  
  #mkdir -p /git-repo/
  #cd /git-repo/
  #git clone git@server端IP:gitosis-admin.git
  #cd gitosis-admin
  #find .
  ./gitosis.conf
  ./keydir
  ./keydir/root@vm1.pub
  注解:
  gitosis.conf文件用来设置用户、仓库和权限的控制文件
  keydir目录则是保存所有具有访问权限用户公钥的地方
  ./keydir/root@vm1.pub:如前所述,该用户具有访问权限
  
  6.创建及设置管理项目  
  #cd /git-repo/gitosis-admin
  #ls keydir/
  root@vm1.pub     ###### 文件名必须为: xxx.pub
  
  添加项目:
  #vim gitosis.conf
  [gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = root@vm1        #显示用户root@vm1.pub是初始化gitosis公钥的拥有者,是唯一能管理gitosis-admin项目的人
  
[group test ]   
       #
组名称
members = root@vm1        #密钥用户名
writable = test               #仓库名称

  #Git
commit  -a  -m “user add”

  #Git  push
  
  Writable  可读写  
readonly 只读

  对于同一个仓库设置不同的权限, 如 :
  [group test
]

  Writable =
test   
仓库名
  Members =
dongsheng@bjcjser01

  [group
test2]

  Readonly
=  test   
仓库名
  Members =
pengfei@bjcjser01

  如果在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地址与主机名对应关系写进去就可以了。
  
  7. 初始、增加及使用项目git-test
(客户端 )

  #cd /git-repo
  #mkdir test
  #cd test
  
  #touch README
  #git add .
  #git commit -a -m "init git-test"
  #git remote add origin git@192.168.56.1:git-test.git
  #git push origin master
  
  注解:在新项目git-test里首次推送数据到服务器前,需先设定该服务器地址为远程仓库,但你不用事先到服务器上手工创建该项目个体的裸仓库— Gitosis 会在第一次遇到推送时自动创建。
  
  说明:如果在执行
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 就可以解决了
  
  Ps:
  $ touch a.txt
  $ git     add     a.txt
  在添加文件的目录中, 输入 git
add 。

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

  $ git push
  如果在git
clone的时候遇到“
  error: cannot
run ssh: No such file or directory - cygwin git”错误,则表示本机没有安装ssh命令。安装方法请参考:http://blog.haohtml.com/archives/13313
  
  8. 客户端增加其他成员公钥到系统中:通过添加用户的公钥到keydir目录即可
  
  1.生成密钥与公钥
  [dev1@bogon ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dev1/.ssh/id_rsa):
Created directory '/home/dev1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/dev1/.ssh/id_rsa.
Your public key has been saved in /home/dev1/.ssh/id_rsa.pub.
The key fingerprint is:
99:4c:e4:00:56:a9:a2:e2:68:20:8c:60:90:2e:b9:b8 dev1@bogon
The key's randomart image is:
+--[ RSA 2048]----+
| . ooo.. |
|o . .+ |
|o. . o |
|+o. . o o |
|Bo . S |
|O. |
|*. |
|Eo |
|. |
+-----------------+

  [dev1@bogon
~]$ ls .ssh
id_rsa id_rsa.pub

  2.将公钥上传到git
server
gitosis-admin/keydir/
目录里,文件名就是是用户名(这里文件名必须与客户端的用户名一致,否则无法使用.不知道同名的情况下如何处理?)注意:我这里是在同一台机器上测试的,不同的机器可以用scp命令来实现上传文件,主要pub文件上传到keydir目录下才可以(scp ~/.ssh/id_rsa.pub root@192.168.0.77:/tmp/sxf.pub)
  cd /root/gitosis-admin/keydir/
cp /home/dev1/.ssh/id_rsa.pub ./dev1.pub

  3.创建新项目,将dev1用户添加进去
  cd /home/gitosis-admin/
  vi
gitosis.conf
[group project2]
writable = project2
members = dev1

  4.保存修改,并将修改提交到git server
  git add .
git commit -a -m 'add new user dev1'
git push

  5.在客户端测试(用户为dev1)
创建项目project2目录(一定要和项目名称一样)
  mkdir
/data/project2
cd /data/project2
git init
touch test.txt
git add .

  git
config --global user.email "you@example.com"
git config --global user.name "Your Name"

  git
commit -a -m 'init project2'
git remote add origin git@xxx:project2.git
git push origin master

  git
pull

  可以看到已经提交成功了!
  如果客户端为Linux的话,在执行git pull的时候,出现
   Permissions
0644 for ‘/root/.ssh/id_rsa’ are too open.

  等错误显示了,只要把权限降到0600就ok了.这种情况下一般是属于将另其它地方的公钥直接放在其它客户端用的原因。
  输入命令
  chmod 0600 ~/.ssh/id_rsa
  然后再执行相应的命令即可.这样就可以密钥登陆了.
  
  9. 客户免密码登陆:
  在 /home/dongsheng/.ssh/authorized_keys
文件中将在客户端生成的
dongsheng 公钥写入。  (如果没有authorized_keys 此文件,自己创建)
  
注意:git上的仓库对git用户要有写权限,同时需要将/etc/ssh/sshd_config中将RSA认证打开,即:



  • 1.RSAAuthentication yes
  • 2.PubkeyAuthentication yes
  • 3.AuthorizedKeysFile  .ssh/authorized_keys
  
  10. 常见问题:
  /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

  
  11. 自己随手补充:
  1》  git init –bare  test.git
命令创建的仓库 ,如果clone
code , 只能使用git 组内的成员

  2》  gitosis- admin  命令建立的仓库, 如果
clone  code , 只有
git 一个user 可以使用

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-132737-1-1.html 上篇帖子: centos git 升级应用 下篇帖子: CENTOS下搭建git代码仓库 ssh协议
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表