Git服务器的搭建

简介:

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

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

在服务器上的准备工作(服务器IP为10.0.2.8 ):


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服务器上添加你的公钥用来验证你的信息了。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,即:

 1.RSAAuthentication yes     

 2.PubkeyAuthentication yes     

 3.AuthorizedKeysFile  .ssh/authorized_keys


3、配置 git服务器

创建git服务器管理用户

 # adduser --system --shell /bin/sh --create-home --home-dir /home/git git  

 # passwd git    

设置git仓库权限

 # chown -R git:git /home/git

 # chmod -R 755 /home/git 


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

 $ ssh-keygen -t rsa     

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

 $ ssh-keygen -t rsa -b 4096     

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


5、切换到初始化git仓库:这里我们选择/data/git/learngit.git来作为我们的git仓库

 # su - git

 $ mkdir /home/git/repositories

 $ git init --bare  /home/git/repositories 

  Initialized empty Git repository in /data/git/learngit.git/  

初始化全局设置

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

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

 

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

 # yum install python-setuptools     

 # cd /home/git

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

 # cd gitosis   

 # python setup.py install  

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

 # chown -R git:git /home/git/gitosis

 # chmod 755 -R /home/git/gitosis

   

7、ssh设置

    #  su - git 

进入~/.ssh目录并使用ssh-keygen生成公钥:

 $ ssh-keygen -t rsa

一定记得,在客户机上生成公钥,上传到服务器,或者在服务器上生成,下载到客户机。

 $ touch ~/.ssh/authorized_keys

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

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

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


8、服务器上生成git用户,使用git用户并初始化gitosis

 # su - git

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

 Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

 Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

初始化之后,会在/home/git/repositories创建gitosis-admin.git项目,可以通过维护这个项目来对gitosis进行配置。

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

至此,服务器端的gitosys配置就完成了。

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

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

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


9、管理gitosis配置

 $ cd ~   

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

 $ cd gitosis-admin/  

 $ ls -al  

看到以下结果:

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

 $ more gitosis.conf  

    gitosis.conf 对应的内容

 [gitosis]    

 [group gitosis-admin]  

 writable = gitosis-admin  

 members = root@localhost.localdomain  


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

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

 # yum install openssh-server openssh-client  

 # ssh-keygen -t rsa 

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

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

 $ cd ~  

 $ cd gitosis-admin  

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

 $ vi gitosis.conf  

   修改gitosis.conf

 [gitosis]  

 [group gitosis-admin]  

 writable = gitosis-admin  

 members = root@localhost.localdomain  

 #加一个组myteam  

 [group myteam]  

 members = tester #这里的tester对上面公匙文件名  

 writable = test_project #项目仓库名  

提交到版本库

 $ git add keydir/tester.pub  

 $ git commit -a -m "Allow tester write access to test_project"  

 $ git push origin master 

 

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

 # cd ~  

 # mkdir test_project  

 # cd test_project  

 # echo "testing ">test.txt  

 # git init //初始化本地版本  

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

 # git add .  

 # git commit -a -m "哈哈哈,测试一下"   

 # git push origin master  

换个目录看能否clone回来

 # cd /tmp  

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


最后大功告成...

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

qianghong000
相关文章
|
5月前
|
Shell Linux 网络安全
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
849 3
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
[Git] 深入理解 Git 的客户端与服务器角色
|
网络安全 Apache 开发工具
图解Git——服务器上的Git《Pro Git》
Git 远程仓库及通信协议简介:远程仓库为团队协作提供平台,支持共享代码。常见形式为裸仓库,仅保存 Git 元数据。Git 支持多种协议,包括本地协议(适合局域网)、HTTP/HTTPS(推荐智能 HTTP,安全易用)、SSH(企业内部协作首选)和 Git 协议(高效只读访问)。选择协议需根据协作需求、安全性和配置难度权衡。此外,搭建 Git 服务器涉及创建裸仓库、上传至服务器、初始化共享仓库等步骤。生成 SSH 公钥、配置服务器及使用 GitWeb 或 GitLab 等工具可进一步增强功能。第三方托管服务如 GitHub 提供便捷的托管选项,适合快速启动和开源项目。总结而言,自行运行服务器提
662 11
|
Linux 开发工具 数据安全/隐私保护
搭建 Git 私人服务器完整指南
本文详细介绍了如何从零开始搭建一个私人的 `Git` 服务器。首先,文章解释了 `Git` 的概念及其优势,并阐述了搭建私人 `Git` 服务器的重要性,包括数据隐私、定制化需求及成本效益。接着,文章分步骤指导读者完成服务器的准备工作,包括操作系统、硬件和网络要求。随后,详细介绍了在不同操作系统上安装 `Git` 的方法,并演示了如何创建 `git` 用户、部署仓库以及设置免密登录。此外,还提供了客户端连接远程仓库的具体步骤,包括 Linux 和 Windows 的操作方式。最后,文章探讨了迁移仓库的方法以及搭建 `Git` 服务器的一些进阶选项。
5992 0
搭建 Git 私人服务器完整指南
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
276 5
|
开发工具 git iOS开发
服务器配置Huggingface并git clone模型和文件
该博客提供了在服务器上配置Huggingface、安装必要的工具(如git-lfs和huggingface_hub库)、登录Huggingface以及使用git clone命令克隆模型和文件的详细步骤。
2455 1
|
Shell 网络安全 开发工具
git实现服务器自动push拉取代码--webhooks
git实现服务器自动push拉取代码--webhooks
1441 1
|
网络安全 开发工具 数据安全/隐私保护
|
6月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
1264 15
|
9月前
|
安全 开发工具 git
git的常用操作命令
git的常用操作命令
543 57