Centos下使用gitosis配置管理git服务端

本文详细介绍如何通过Gitosis搭建Git服务器的过程,包括编译安装Git、生成公钥、初始化Gitosis、配置gitosis-admin等步骤,并介绍了常见问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:由于条件有限,我这里使用的是同一台centos的,但教程内容基本上通用。
  1.编译安装git git安装教程
  2.安装gitosis
  $ yum install python python-setuptools
  $ git clone git://github.com/res0nat0r/gitosis.git
  $ cd gitosis
  $ python setup.py install
  2.在开发机器上生成公共密钥(用来初始化gitosis)
  $ ssh-keygen -t rsa #不需要密码,一路回车就行(在本地操作)
  $ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上传你的ssh public key到服务器
  3.初始化gitosis[服务器端]
  $ adduser git # 新增一个git用户(先添加用户组 groupadd git)
  $ su git # 切换倒git用户下
  $ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是刚刚传过来的,注意放在/tmp目录主要是因为此目录权限所有人都有定权限的
  $ rm /tmp/id_rsa.pub # id_rsa.pub已经无用,可删除.
  4.获取并配置gitosis-admin [客户端]
  $ git clone git@xxx:gitosis-admin.git # 切换到root用户并在本地执行,获取gitosis管理项目,将会产生一个gitosis-admin的目录,里面有配置文件gitosis.conf和一个 keydir 的目录,keydir目录主要存放git用户名
  $ vi gitosis-admin/gitosis.conf # 编辑gitosis-admin配置文件
  如果无法git clone的话,可以使用git clone git@xxx:/home/git/repositories/gitosis-admin.git
  # 在gitosis.conf底部增加
  [group 组名]
  writable = 项目名
  members = 用户 # 这里的用户名字 要和 keydir下的文件名字相一致
  # VI下按ZZ(大写)两次会执行自动保存并退出,完成后执行
  $ cd gitosis-admin
  $ git add .
  $ git commit -a -m “xxx xx” # 要记住的是,如果每次添加新文件必须执行git add .,或者git add filename,如果没有新加文件,只是进行修改的话就可以执行此句。
  # 修改了文件以后一定要PUSH到服务器,否则不会生效。
  $ git push
  如果在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地址与主机名对应关系写进去就可以了。
  注意:这里我们并没有进行任何的修改的,现在只有一个管理git的项目。下面的为新添加项目的配置,大家经常用到的也就是下面的操作的。
  新建项目
  到此步就算完成gitosis的初始化了。接下来的是新建一个新项目到服务器的操作,如第5步中配置gitosis.conf文件添加的是
  [group project1] # 组名称
  writable = project1 # 项目名称
  members = xxx # 用户名xxx一定要与客户端使用的用户名完全一样,否则无权限操作
  提交修改并更新到git server服务端
  $ git commit -a -m “添加新项目project1,新项目的目录是project1,该项目的成员是xxx“ # “”里的内容自定
  $ git push
将新创建的项目提交到git server 上进行登记。以便客户可以操作新项目.
  # 在客户端创建项目目录(客户端,当前用户为 XXX )
  现在回到开发者客户端,上面创建了一个新项目project1并提交到了git server 。我们这里就创建此项目的信息.注意 项目名称 project1要与gitosis.conf文件配置一致,
  $ mkdir /home/用户/project1
  $ cd /home/用户/project1
  $ git init
  $ git add . # 新增文件 留意后面有一个点
  $ git commit -a -m “初始化项目project1″
  # 然后就到把这个项目放到git server服务器上去.
  $ git remote add origin git@xxx:project1.git # xxx为服务器地址
  $ 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
  ------------------------------------------------------------------------------------------------ 如果在git clone的时候遇到“
  error: cannot run ssh: No such file or directory - cygwin git
  ”错误,则表示本机没有安装ssh命令。安装方法请参考:http://blog.haohtml.com/archives/13313 有时候我们要更换电脑来重新开发项目。这个时候,只需要将id_rsa私钥放在home目录里的.ssh目录里就可以了。(有时候一个人开发多个项目,这时候可能会提示id_rsa文件已经存在。不太清楚这里如何解决???) 续篇:git下添加新项目及用户
  ====================================================
  三、常见问题
  首先确定 /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

最新内容请见作者的GitHub页:http://qaseven.github.io/

<think>嗯,用户想在CTYUNOS系统上安装和配置Git服务。首先,我需要确定CTYUNOS是基于哪种Linux发行版的。因为不同的发行版使用的包管理工具不同。例如,Ubuntu用apt,CentOS用yum。根据提供的引用,用户之前在Ubuntu和CentOS上都安装过Git,但CTYUNOS可能属于哪个呢? 查看引用[3]提到的是CentOS7安装Git仓库,引用[4]也是在CentOS7上安装ceph。可能CTYUNOS是基于CentOS的,所以应该使用yum来安装。不过,也有可能CTYUNOS是其他系统,比如基于Debian的,这时候需要用apt。但用户没有明确说明,可能需要先建议他们检查系统版本。 另外,用户提到的安装Git服务可能不仅仅是安装Git客户端,还包括搭建Git服务器?比如创建仓库,设置权限等。或者用户可能只是想安装Git工具本身。需要进一步明确。但根据引用[3]中的例子,安装Git后验证版本,可能用户只需要安装Git客户端。 接下来,步骤应该是先更新系统包,然后安装Git。对于基于RHEL的系统,命令应该是sudo yum install git,或者如果使用dnf的话。安装完成后,验证版本,配置用户名和邮箱,这些是基本步骤。另外,如果需要搭建服务器,可能需要创建git用户,设置SSH访问,或者使用Gitosis/Gitolite等工具,但用户的问题可能只是安装Git客户端。 用户提供的引用中有提到关闭防火墙和SELinux,在安装其他服务时可能需要类似的操作,但安装Git本身可能不需要。但如果有问题的话,可能需要建议用户检查这些设置。 总结步骤:1. 确认系统类型,2. 使用对应的包管理器安装Git,3. 验证安装,4. 配置用户信息,5. 可选搭建服务器部分。同时,要提醒用户如果遇到依赖问题如何处理,比如安装epel源。 可能的问题:如果CTYUNOS是基于较旧的CentOS版本,默认仓库的Git版本可能太低,需要从其他源安装。这时可以建议用户通过源码编译或者添加第三方仓库,比如IUS或Software Collections。 另外,用户可能需要生成SSH密钥,或者配置HTTP访问,这部分是否需要包括在回答中?根据引用[3]中的步骤,可能只需要基础安装和配置,但用户的问题是关于安装和配置Git服务,可能包括服务端设置。所以需要分两部分:安装客户端和配置服务端。 比如,服务端配置可能需要创建git用户,初始化仓库目录,设置权限,配置SSH访问等。这部分可以参考引用[3]中的步骤,但需要更详细。例如: sudo adduser git sudo mkdir /opt/git sudo chown git:git /opt/git 然后用户可以通过git init --bare在服务器上创建仓库,并配置SSH密钥认证。 不过用户的问题可能更偏向于安装Git工具本身,而不是搭建服务器。需要根据问题判断,但用户提到“安装Git服务”,可能包括服务端配置。因此,回答应该涵盖这两部分:安装Git客户端,以及配置Git服务器(如果需要)。 最后,要检查所有步骤是否符合CTYUNOS的环境,可能需要用户根据实际情况调整命令,比如包管理器的可用性,权限设置等。同时,参考引用中的例子,比如关闭防火墙或SELinux,可能需要用户在遇到问题时检查这些设置。</think>### 在CTYUNOS系统中安装和配置Git服务的步骤 #### 1. **确认系统基础环境** CTYUNOS通常基于主流Linux发行版(如CentOS或Ubuntu)。需先确认系统版本: ```bash cat /etc/os-release ``` 若输出包含`CentOS`或`Red Hat`,则使用`yum`或`dnf`包管理器;若为Ubuntu/Debian系,则使用`apt`[^3][^4]。 #### 2. **安装Git客户端** - **CentOS/RHEL系**: ```bash sudo yum update # 更新软件源 sudo yum install git # 安装Git ``` 若默认仓库版本过低,可通过添加`EPEL`仓库安装新版: ```bash sudo yum install epel-release sudo yum install git ``` - **Ubuntu/Debian系**: ```bash sudo apt update sudo apt install git ``` #### 3. **验证安装** 执行以下命令检查版本: ```bash git --version ``` 成功安装会输出类似`git version 2.27.0`[^3]。 #### 4. **配置Git用户信息** 设置全局用户名和邮箱(提交代码时标识身份): ```bash git config --global user.name "Your Name" git config --global user.email "your@email.com" ``` #### 5. **可选:搭建Git服务器** **步骤1:创建专用用户和仓库目录** ```bash sudo adduser git # 创建git用户 sudo mkdir /opt/git # 创建仓库根目录 sudo chown git:git /opt/git # 修改所有权 ``` **步骤2:初始化仓库** ```bash sudo -u git mkdir /opt/git/project.git # 创建裸仓库 cd /opt/git/project.git sudo -u git git init --bare # 初始化 ``` **步骤3:配置SSH访问** 将用户公钥(如`id_rsa.pub`)添加到`git`用户的授权文件: ```bash sudo -u git mkdir /home/git/.ssh sudo -u git touch /home/git/.ssh/authorized_keys sudo -u git chmod 600 /home/git/.ssh/authorized_keys echo "ssh-rsa [公钥内容]" | sudo tee -a /home/git/.ssh/authorized_keys ``` **步骤4:客户端克隆仓库** ```bash git clone git@服务器IP:/opt/git/project.git ``` #### 6. **防火墙与SELinux配置(如需要)** - **防火墙**:开放SSH端口(默认22): ```bash sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload ``` - **SELinux**:若遇到权限问题,可临时禁用或调整策略: ```bash sudo setenforce 0 # 临时关闭 ``` #### 7. **测试功能** ```bash # 客户端测试提交 cd project touch README.md git add . git commit -m "Initial commit" git push origin master ``` --- ### 常见问题与优化 1. **依赖问题**:若安装失败,检查网络或手动安装依赖包。 2. **版本升级**:通过源码编译安装新版Git: ```bash wget https://www.kernel.org/pub/software/scm/git/git-2.30.0.tar.gz tar -xf git-2.30.0.tar.gz cd git-2.30.0 make prefix=/usr/local all sudo make prefix=/usr/local install ``` 3. **权限管理**:推荐使用`gitolite`或`gitosis`细化仓库权限控制。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值