系统环境
CentOS 7
安装Git
- 下载git
wget https://github.com/git/git/archive/v2.14.1.zip
- 安装依赖
sudo yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
- 解压git
unzip v2.14.1.zip
- 将git安装到/usr/local上
- 进入git-2.14.1文件夹
cd git-2.14.1
- 编译
注:执行此命令可能会出现以下错误make prefix=/usr/local all
原因是因为系统未安装gcc,这个是由于在安装操作系统时,没有选择安装开发工具,因为默认是不选中安装。执行以下命令安装即可/bin/sh: cc: 未找到命令 make: *** [credential-store.o] 错误 127
yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++
- 安装
make prefix=/usr/local install
- 查看是否安装
[root@VM_0_6_centos ~]# git --version git version 2.14.1
Git配置
- 添加git账号
[root@VM_0_6_centos ~]# adduser git
- 修改git密码
[root@VM_0_6_centos ~]# passwd git新的 密码:
更改用户 git 的密码 。
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
Git权限管理
配置服务器端ssh访问
- 切换到git账号
su git
- 进入git账好主目录
cd /home/git
- 创建ssh配置
mkdir .ssh
- 进入刚创建的.ssh目录并创建authorized_keys文件,此文件存放客户端远程访问的 ssh的公钥
cd .ssh
touch authorized_keys
- 设置权限,此步骤不能省略,而且权限值也不要改,不然会报错。
chmod 700 /home/git/.ssh/
chmod 600 /home/git/.ssh/authorized_keys
将客户端的ssh私匙上传到服务器
- 进入.ssh目录
cd /users/zyp/.ssh
- 查看文件夹
-r--------@ 1 zyp staff 902 11 25 18:21 centos
-rw------- 1 zyp staff 3247 5 25 2018 id_rsa
-rw-r--r--@ 1 zyp staff 743 5 25 2018 id_rsa.pub # 我们要用的私钥
-rw-r--r--@ 1 zyp staff 2168 12 3 09:19 known_hosts
-rw-------@ 1 zyp staff 902 8 2 11:13 zyp.dms
- 将私匙拷贝到git服务器
# 以下命令是:把本地的id_rsa.pub文件拷贝到xxx服务器,登录xxx服务的账号是git。
# 冒号后面默认就是git账号的主目录,最后文件被保存成laoma.pub
# 注意:把域名换成你自己的或者ip,最后的文件名可以自己定,后面还有用。
$ scp ./id_rsa.pub git@xxx:.ssh/laoma.pub
# 执行上述命令可能会出现如下错误
git@132.232.12.239: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
# 修改目标服务器中 /etc/ssh/sshd_config 中的参数:
# 将PasswordAuthentication no中的“no”改为yes,如果有注释,将注释去掉
# 之后service sshd restart 重启sshd服务就可以了。
服务器端添加客户端的SSH公钥
- 查看.ssh文件夹下是否有authorized_keys和zyp.pub文件
ls -l
-rw------- 1 git git 0 12月 3 23:04 authorized_keys
-rw-r--r-- 1 git git 743 12月 3 23:19 zyp.pub
- 如果有,就把zyp.pub文件中的内容添加到authorized_keys中.
$ cat laoma.pub >> authorized_keys
# >> 是在文件后面追加的意思,主要如果用其他编辑器,每个ssh的pub要单独一行,建议用cat命令方便简单。
- 配置完成
测试连接
- 在客户端输入ssh git@ip地址
ssh git@xxx.xxx.xx.xxx
# 连接成功
Last login: Mon Dec 3 23:31:05 2018 from x.xxx.x.xxx
# 第一次连接有警告,输入yes继续即可。如果可以连接上,那么恭喜你的ssh配置已经可以了。
禁用客户端的shell连接
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
# 改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell