Centos6.5基于gitosis的Git服务器的搭建

简介:

GitHub是一个免费托管开源代码的Git服务器,如果我们不想公开项目的源代码,又不想付费使用,那么我们可以自己搭建一台Git服务器。

1、安装 openssh服务器与客户端工具

  1. #  yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 

  2. #  wget https://www.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz

  3. #  tar zxvf git-2.7.4.tar.gz

  4. #  cd git-2.7.4

  5. #  make prefix=/usr/local/git all

  6. #  make prefix=/usr/local/git install

  7. #  ln -s /usr/local/git/bin/* /usr/bin/

  查看版本号:git --version
  git version 2.7.4

spacer.gif

2、Git服务器打开RSA认证

在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,即:

1.RSAAuthentication yes     

2.PubkeyAuthentication yes     

3.AuthorizedKeysFile  .ssh/authorized_keys


3、配置 git服务器

创建git服务器管理用户

  1. $  adduser --system --shell /bin/sh --create-home --home-dir /home/git git  

  2.   设置git仓库权限

  3. $  chown -R git:git /home/git

  4. $  chmod -R 755 /home/git 

初始化全局设置

  1. $  git config --global user.name "myname"   

  2. $  git config --global user.email "myname@server"  

创建个人公钥和私钥(用于后面的git服务的管理员管理)

       $  ssh-keygen -t rsa     

默认情况下,公钥和私钥会保存在~/.ssh目录下,有这些文件:id_rsa  id_rsa.pub  known_hosts


4、切换到root,   获取并安装gitosis  

  1. #  yum install python-setuptools     

  2. #  cd /tmp/

  3. #  git clone git://github.com/res0nat0r/gitosis.git  

  4. #  cd gitosis   

  5. #  python setup.py install  

  6. 显示Finished processing dependencies for gitosis==0.2即表示成功 


5、ssh设置

$  su git

$  mkdir ~/.ssh

$  touch ~/.ssh/authorized_keys

$  chmod 600 /home/git/.ssh/authorized_keys  

#如果有###文字,这个是gitosis生成的,不要去删除。删掉其他的sshkey就行了,不然会造成gitosis无法使用

收集所有公钥存放在.ssh/authorized_keys文件中,然后再次clone或者push的时候,就不需要再输入密码了。

$ssh-keygen -t rsa

注意不能忘记私钥的密码。默认会生成~/.ssh/id_rsa.pub公钥文件。

有了密钥以后便可初始化gitosis,使gitosis获得对Git的管理权限。


6、使用git用户并初始化gitosis

  1. $  su - git

  2. $  gitosis-init < ~/.ssh/id_rsa.pub //将该公匙导入gitosis里,这时本机已经有了为git的管理权限了 

    这样会在/home/git下面生成gitosis和repositories两个目录,后者即为存放公共库的目录。

    1. 生成的gitosis-admin为Git的用户访问权限管理库,gitosis通过这个git库来管理所有git库的访问权限。

    2. 通过执行初始化,该公钥的拥有者就能修改用于配置gitosis的那个特殊Git仓库了

  3. $  chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update  

    确保/home/git/repositories/gitosis-admin.git/hooks/post-update具有执行权限(755)。

7、配置服务器上的gitosis

  1. $ su - git   

  2. $ git clone git@localhost:repositories/gitosis-admin   //因为是同一台机器,所以可以用localhost

  3. $ cd gitosis-admin/  

  4. $ ls -al  

看到以下结果

spacer.gif1348568293_3418.jpg

gitosis.conf用来配置git项目和用户,keydir存放用户的公钥,这里的公钥对命名有严格要求,要是 用户名.pub,必须以.pub后缀结尾。


8、在成员机(ip=10.0.2.100)上生成自已的公匙,

$  sudo yum install openssh-server openssh-client  

$  ssh-keygen -t rsa 

$  scp ~/.ssh/id_rsa.pub root@10.0.2.8:gitosis-admin/keydir/qsh.pub //将本机的公匙copy到gitosis的keydir中  

   

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

$  cd ~  

$  cd gitosis-admin  

$  cat keydir/tester.pub >> /home/git/.ssh/authorized_keys //将tester的公匙导入到git目录的 authorized_keys文件中  

10、添加GIT项目:

  1. $ su - git 

  2. $ git clone git@hostname:repositories/gitosis-admin.git

  3. $ vi gitosis.conf  

  4. [gitosis]  

  5. [group gitosis-admin]  

  6. writable = gitosis-admin  

  7. members = root@localhost.localdomain  

  8. #加一个组myteam  

  9. [group myteam]  

  10. members = qsh  #上面公匙文件名,#多个用户用空格分开  

  11. writable = test_project #项目仓库名  

提交到版本库

  1. $ git add .  

  2. $ git commit -am "Allow tester write access to test_project"  

  3. $ git push origin master  

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

  1. $ cd ~  

  2. $ mkdir test_project  

  3. $ cd test_project  

  4. $ echo "testing ">test.txt  

  5. git init --bare   //初始化本地版本  

  6. $ git remote add origin git@10.0.2.8:repositories/test_project.git //加到远程版本库中  

  7. $ git add .  

  8. $ git commit -a -m "哈哈哈,测试一下"   

  9. $ git push origin master  


换个目录看能否clone回来

  1. $ cd /tmp  

  2. $ git clone git@10.0.2.8:repositories/test_project //此时应该不会提示输入ssh密码的  


最后大功告成...

本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/1754808如需转载请自行联系原作者


qianghong000

相关文章
|
1月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
64 10
|
2月前
|
存储 安全 Linux
CentOS 7.9系统备份:每日定期发送最新备份文件到另一台服务器。
注意,这个解决方案忽略了很多细节,例如错误处理和通知、备份版本控制、循环处理旧的备份文件等等。此外,你也应该尽量保持源服务器和目标服务器之间快速,稳定且安全的网络连接,并且目标服务器应该有足够的空间用于存放每天的备份文件。如果你需要更高级的备份解决方案,可能需要考虑一下使用专门的备份工具或者服务。
79 18
|
2月前
|
存储 运维 网络协议
【Syslog】Centos下的syslog服务器配置
通过本文的配置指导,您不仅学会了如何安装和配置 `rsyslog`,还掌握了如何在防火墙中开放必要的端口,并验证服务器的配置是否正确。希望这些知识能够帮助您更好地管理和维护您的Linux系统。
185 15
|
4月前
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
110 18
[Git] 深入理解 Git 的客户端与服务器角色
|
4月前
|
网络安全 Apache 开发工具
图解Git——服务器上的Git《Pro Git》
Git 远程仓库及通信协议简介:远程仓库为团队协作提供平台,支持共享代码。常见形式为裸仓库,仅保存 Git 元数据。Git 支持多种协议,包括本地协议(适合局域网)、HTTP/HTTPS(推荐智能 HTTP,安全易用)、SSH(企业内部协作首选)和 Git 协议(高效只读访问)。选择协议需根据协作需求、安全性和配置难度权衡。此外,搭建 Git 服务器涉及创建裸仓库、上传至服务器、初始化共享仓库等步骤。生成 SSH 公钥、配置服务器及使用 GitWeb 或 GitLab 等工具可进一步增强功能。第三方托管服务如 GitHub 提供便捷的托管选项,适合快速启动和开源项目。总结而言,自行运行服务器提
81 11
|
4月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
7月前
|
NoSQL Linux Redis
在 centos7 下重启/开启 redis 服务器
本文提供了一种在Centos 7操作系统下如何重启Redis服务器的步骤,包括停止Redis服务、确认停止成功以及重新启动Redis服务。
411 2
在 centos7 下重启/开启 redis 服务器
|
7月前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
90 5
|
8月前
|
Linux 开发工具 数据安全/隐私保护
搭建 Git 私人服务器完整指南
本文详细介绍了如何从零开始搭建一个私人的 `Git` 服务器。首先,文章解释了 `Git` 的概念及其优势,并阐述了搭建私人 `Git` 服务器的重要性,包括数据隐私、定制化需求及成本效益。接着,文章分步骤指导读者完成服务器的准备工作,包括操作系统、硬件和网络要求。随后,详细介绍了在不同操作系统上安装 `Git` 的方法,并演示了如何创建 `git` 用户、部署仓库以及设置免密登录。此外,还提供了客户端连接远程仓库的具体步骤,包括 Linux 和 Windows 的操作方式。最后,文章探讨了迁移仓库的方法以及搭建 `Git` 服务器的一些进阶选项。
1673 0
搭建 Git 私人服务器完整指南
|
7月前
|
存储 网络协议 Linux
AWS实操-EC2-创建购买linux(centos)EC2服务器
AWS实操-EC2-创建购买linux(centos)EC2服务器