之前写了svn服务器的搭建,但是svn和git相比,在版本控制和分支管理上确实不如git好用,这里记录下搭建git服务器的过程。
系统环境:centos 7.0_64
一:git服务安装
1.安装git相关组件
[root@gitserver ~] yum -y install git curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
2.创建git用户
[root@gitserver ~] groupadd git && useradd git -g git
3.创建git用户授权登录用户文件authorized_keys
[root@gitserver ~] mkdir -p /home/git/.ssh/ [root@gitserver ~] touch /home/git/.ssh/authorized_keys [root@gitserver ~] chmod 700 /home/git/.ssh [root@gitserver ~] chmod 600 /home/git/.ssh/authorized_keys [root@gitserver ~] chown git.git -R /home/git/.ssh #所属用户这里设置很关键哦
4.限制git用户权限,禁止shell登录
修改/etc/passwd 下git用户 git:x:1002:1002::/home/git:/bin/bash 为:
git:x:1002:1002::/home/git:/usr/bin/git-shell
授权了/usr/bin/git-shell 所以还需要拷贝对应文件到git用户目录
[root@gitserver ~] cp -R /usr/share/doc/git-1.8.3.1/contrib/git-shell-commands /home/git/ [root@gitserver ~] chown git.git -R /home/git/git-shell-commands/ [root@gitserver ~] chmod 755 /home/git/git-shell-commands/*
二:创建git仓库
选定一个目录作为Git仓库,假定是/home/gitdata/cnyunwei.git
[root@gitserver ~] cd /home [root@gitserver home] mkdir gitdata [root@gitserver home] cd gitdata [root@gitserver gitdata] git init --bare cnyunwei.git #--bare 参数是创建空库 [root@gitserver home] chown git.git -R /home/gitdata/ #必须设置为git用户,否则无法写入文件
三:创建本地用户公钥,并导入authorized_keys ,有两种方法:
A.使用TortoiseGit 工具生成公钥私钥(可视化界面):
下载安装TortoiseGit : https://tortoisegit.org/download/
可参考: http://jingyan.baidu.com/article/63f236280f7e750209ab3d60.html
将生成的公钥复制,添加到服务器/home/git/.ssh/authorized_keys 文件中,然后使用TortoiseGit的Pageant程序导入自己的私钥。
B.使用Git Bash 生成密钥:
下载安装: https://git-scm.com/download/win
打开Git Bash (类似于一个CMD窗口)
ssh-keygen -t rsa -C "email@email.com" #邮箱这里可以选填,全部敲回车即可生成密钥
密钥文件在C:\Users\usrname\.ssh 下,将id_rsa.pub 的文件添加到服务器authorized_keys 文件中即可。
四:关联本地仓库和远程空仓库(这里是通过Git Bash 命令方式关联)
git是采用SSH传输,如果服务器的SSH端口不是22 就需要调整URL地址
cd e:/cnyunwei #进入本地项目文件夹目录 git remote add origin ssh://git@192.168.31.10:22000/home/gitdata/cnyunwei.git #关联本地仓库到远程空仓库
默认SSH端口的情况下使用:
git remote add origin git@192.168.31.10:/home/gitdata/cnyunwei.git
如果出现下面的报错,是没有本地仓库的意思,先生成本地仓库再关联即可。
fatal: Not a git repository (or any of the parent directories): .git git init git remote add origin ssh://git@192.168.31.10:22000/home/gitdata/cnyunwei.git
测试一下提交到远程仓库:
git add --all git commit -m "初始化" git push -u origin master
git服务器的安装到此完成,如果在提交文件到远程仓库时提示如下错误,请检查服务器上git仓库所属用户和用户组是否为git 。
remote: error: insufficient permission for adding an object to repository database ./objects remote: fatal: failed to write object
主要参考自 《 搭建Git服务器 – 廖雪峰的官方网站 》, 《 Git 服务器搭建 | 菜鸟教程 》
转载请注明:菜鸟运维网 » Centos 搭建Git服务器