下载安装 git
Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服务器。
安装依赖库和编译工具
为了后续安装能正常进行,我们先来安装一些相关依赖库和编译工具
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
安装编译工具
yum install gcc perl-ExtUtils-MakeMaker
下载 git
选一个目录,用来放下载下来的安装包,这里将安装包放在 /usr/local/src 目录里
cd /usr/local/src
到官网找一个新版稳定的源码包下载到 /usr/local/src 文件夹里
wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz
解压和编译
解压下载的源码包
tar -zvxf git-2.10.0.tar.gz
解压后进入 git-2.10.0 文件夹
cd git-2.10.0
执行编译
make all prefix=/usr/local/git
编译完成后, 安装到 /usr/local/git 目录下
make install prefix=/usr/local/git
配置环境变量
将 git 目录加入 PATH
将原来的 PATH 指向目录修改为现在的目录
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
生效环境变量
source /etc/bashrc
此时我们能查看 git 版本号,说明我们已经安装成功了。
git --version
创建 git 账号密码
创建 git 账号
为我们刚刚搭建好的 git 创建一个账号
useradd -m gituser
然后为这个账号设置密码
passwd gituser
控制台输入创建密码后,输入您自定义的密码,并二次确认。
初始化 git 仓库并配置用户权限
创建 git 仓库并初始化
我们创建 /data/repositories 目录用于存放 git 仓库
mkdir -p /data/repositories
创建好后,初始化这个仓库
cd /data/repositories/ && git init --bare test.git
配置用户权限
给 git 仓库目录设置用户和用户组并设置权限
chown -R gituser:gituser /data/repositories
chmod 755 /data/repositories
[查找 git-shell 所在目录] , 编辑 /etc/passwd 文件,将最后一行关于 gituser 的登录 shell 配置改为 git-shell 的目录[?]如下
示例代码:/etc/passwd
gituser:x:500:500::/home/gituser:/usr/local/git/bin/git-shell
如果按照刚才的步骤执行, 这个位置应该是 /usr/local/git/bin/git-shell, 否则请通过 which git-shell 命令查看位置
安全目的, 限制 git 账号的 ssh 连接只能是登录 git-shell
使用搭建好的 Git 服务
克隆 test repo 到本地
cd ~ && git clone gituser@<您的 CVM IP 地址>:/data/repositories/test.git
客户端Git操作免密(假设当前处于root账户,服务端git指定账户为gituser)
1、使用SSH协议
1.1在服务器指定的git专用账户主目录下,查看是否存在 .ssh文件夹,是否存在.ssh/authorized_keys文件,如果不存在,则通过
cd /home/gituser
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
(非gituser用户创建的情况下,需要额外将文件归属权赋予gituser)
chown -R gituser:gituser .ssh/authorized_keys
( 要保证.ssh和authorized_keys都只有用户自己(root除外)有写权限。否则验证无效 )
(以上方法可通过解除gituser shell限制,切换到该用户下,在运行ssh-keygen -t rsa 生成)
1.2在客户端主目录找到 .ssh目录下的id_rsa.pub文件,拷贝到服务端 authorized_keys文件即可(一个客户端id 一行)
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
如客户端未生成公钥,则运行
ssh-keygen -t rsa -C 'xxxx@email.com'
生成对应的公钥,再上传服务器。
其后,在客户端即可指定ssh协议克隆git工程
git clone gituser@gitserver:/data/repo/test.git
如果已经使用https协议克隆了,那么按照如下方法更改协议(未验证):
git remote set-url origin gituser@gitserver:/data/repo/test.git
2、添加git config(未验证)
git config --global credential.helper store
执行此命令后,用户主目录下的.gitconfig文件会多了一项:[credential]
helper = store
重新git push就不需要用户名密码了
3、使用文件创建用户名和密码(未验证)
文件创建在用户主目录下:
touch .git-credentials
vim .git-credentials
https://{username}:{password}@github.com
参考链接: