一、git的安装
服务器端
1.查看 yum 源仓库的 Git 信息
# yum info git
可以看出,截至目前,yum 源仓库中最新的 Git 版本才 1.8,而查看最新的 Git 发布版本,已经 2.9.2 了。
2. 依赖库安装
# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install gcc perl-ExtUtils-MakeMaker
3. 卸载低版本的 Git
通过命令:git –-version查看系统带的版本,Git 版本是:1.8.3.1,所以先要卸载低版本的 Git,命令:
# yum remove git
4. 下载新版的 Git 源码包(我放在 /usr/local/git 的目录下了,git是我自己建的目录)
# cd /usr/local
# mkdir git
# cd git
在线下载最新的源码包
# wget https://github.com/git/git/archive/v2.9.2.tar.gz
5. 解压当前目录
# tar -xzvf v2.9.2.tar.gz
6. 安装 Git
执行以下命令进行编译安装。
# cd git-2.9.2
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
7. 添加到环境变量
# vim /etc/profile
如果没有vim,则安装vim工具
# yum install vim #若有vim可忽略此行
在空白行增添
# export PATH="/usr/local/git/bin:$PATH"
使配置立即生效
# source /etc/profile
8. 查看版本号
# git --version
git version 2.9.2
9.将git设置为默认路径,不然后面克隆时会报错
$ ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
$ ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
至此,CentOS 就安装上了最新版本的 Git。
二、创建git用户组和用户,用来运行git服务
服务器端
$ groupadd git
$ useradd git -g git
$ passwd git#参数是用户名
切换到git用户
$ su - git
三、创建公钥
本地
1.配置查看
$ git config --lis
用户名和邮箱,如果已填写过则PASS
$ git config --global user.name "username"
若想修改用户名或邮箱
$git config --global --replace-all user.email "输入你的邮箱"
$git config --global --replace-all user.name "输入你的用户名"
然后再查看下
$git config --list
发现修改成功了
2.生成SSH密钥
执行后,
第一个提示输入保存文件名,默认为空,回车。
第二个提示输入密钥,默认为空,回车
第三个确认刚输入密钥,默认为空,回车
完成后,默认保存位置当前用户名下/.ssh/id_rsa 和id_rsa.pub
id_rsa 私钥
id_rsa.pub公钥
待会需要把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个马上回到服务器端
四、设置权限
服务器端
$ cd /home/git/
$ mkdir .ssh #新建文件夹
$ chmod 700 .ssh
$ touch .ssh/authorized_keys#新建文件
$ chmod 600 .ssh/authorized_keys#权限只归用户,去除无关用户的权限
重要重要重要
$ cd home
$ chown -R git:git git#设置git文件夹所有用户归git用户
切记否则clone依旧需要输入密码
添加证书之前,还要做这么一步:Git服务器打开RSA认证
$ vim /etc/ssh/sshd_config
即:
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile home/git/.ssh/authorized_keys
这里我们可以看到公钥存放在home/git/.ssh/authorized_keys文件中。
所以我们在/home/git下创建.ssh目录,然后创建authorized_keys文件,并将刚生成的公钥导入进去。
然后再次clone的时候,或者是之后push的时候,就不需要再输入密码了
把本地的id_rsa.pub文件内容复制到服务器断的/home/git/.ssh/authorized_keys里面
五、初始化Git仓库
服务器端
$ cd /home/git
$ git init --bare test.git
Initialized empty Git repository in /home/git/test.git/
把仓库所属用户改为git
chown -R git:git test.git
以后每创建一个新的仓库,记得这步操作:修改仓库所属用户为git
六、克隆服务器仓库
本地
$ git clone git@your-ip:/home/git/test.git
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
七、禁止Shell登录
服务器端
出于安全考虑,git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。
找到类似下面的一行:
git:x:502:502::/home/git:/bin/bash
改为
git:x:502:502::/home/git:/usr/local/git/bin/git-shell
git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出
单独提出来,防止导入公钥后clone依旧需要输入密码
1.权限问题
服务器端
$ cd /home/git/
$ mkdir .ssh #新建文件夹
$ chmod 700 .ssh
$ touch .ssh/authorized_keys#新建文件
$ chmod 600 .ssh/authorized_keys#权限只归用户,去除无关用户的权限
2.文件夹和文件要归属于git用户,否则无法访问git仓库
服务器端
git文件夹归属git账户
$ cd home
$ chown -R git:git git#设置git文件夹所有用户归git用户
仓库权限归属git用户
$ cd /home/git
$ git init --bare test.git
Initialized empty Git repository in /home/git/test.git/
把仓库所属用户改为git
chown -R git:git test.git
以后每创建一个新的仓库,记得这步操作:修改仓库所属用户为git
领取专属 10元无门槛券
私享最新 技术干货