搭建环境:
服务器 CentOS7.4 | git(version 1.8.3.1) |
---|---|
客户端 Windows8 | git(version 2.19.1) |
1. 安装Git相关软件
Linux是服务器端系统,Windows作为客户端系统,分别安装Git。
#linux环境下安装服务端:
yum install -y git
#安装完毕后查看版本
git --version
下载 Git for Windows,地址:https://git-for-windows.github.io/
win版安装完之后,可以使用Git Bash作为命令行客户端。
注意:如果直接下一步下一步安装的话,默认路径会生成在桌面,建议修改安装路径地址!!
git --version
git version 2.19.1.windows.1 //安装完之后,查看Git版本
服务器端(linux下)安装Gitosis
git clone https://github.com/res0nat0r/gitosis.git
yum install python-setuptools -y
cd gitosis
python setup.py install
2. 服务器端创建git用户来管理Git服务(linux下)
查看git用户是否存在
id git
创建git用户**(特别注意,这里git用户建议一定要用强密码,否则就会出现后面的情况,我这里的测试环境用123作为密码,生成环境切不可!!!!!!!!!)**
useradd git
echo "123" | passwd --stdin git
su - git
3. 配置公钥
在Windows
配置管理者,git服务器需要一些管理者,通过上传开发者机器的公钥到服务器,添加成为git服务器的管理者,打开git命令行
#生成公匙
ssh-keygen -t rsa
#复制到git服务器上
scp ~/.ssh/id_rsa.pub [email protected]:~
4. 配置gitosis ( linux上)
使用git用户并初始化gitosis
cd .ssh
gitosis-init < ./id_rsa.pub
#添加权限
chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
在Windows上机器上clone gitosis-admin到管理者主机(以下在win机器上操作)
说明:gitosis.conf: git服务器配置文件
keydir: 存放客户端公钥
git clone ssh://[email protected]:22/home/git/repositories/gitosis-admin.git
cd gitosis-admin
ls
vim gitosis.conf
[group gitosis-admin] #组名称
members = git@iz2ze6pdfsjapodlijunstz #组成员
writable = gitosis-admin #项目名称
[group test] //这里添加了"test"项目组,上传到个git服务器
members = git@iz2ze6pdfsjapodlijunstz
writable = test
在 /home/git/ 下创建目录 .ssh****(linux下)****
pwd /home/git
mkdir .ssh
ls -a
确认 .ssh 文件夹的 owner 修改为 git
ll -a
5.将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件(win下)
回到 Git Bash 下,导入文件:
ssh [email protected] 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
回到服务器端(linux),查看 .ssh 下是否存在 authorized_keys 文件:
cd .ssh
ll
重要:
修改 .ssh 目录的权限为 700
修改 .ssh/authorized_keys 文件的权限为 600
6.客户端再次 clone 远程仓库(win)
git clone [email protected]:/home/git/repositories/gitosis-admin.git
7.linux服务器禁止 git 用户 ssh 登录服务器!!必须做
之前在服务器端(linux)创建的 git 用户不允许 ssh 登录服务器
编辑 /etc/passwd
vi /etc/passwd
找到:
git:x:502:504::/home/git:/bin/bash
修改为
git:x:502:504::/home/git:/bin/git-shell
此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。
8.到此git服务器就搭建完毕了,此 URL是git的命令大全http://t.cn/RCwqbg9,可进行参考使用。
9.注意事项
(1)由于搭建git既涉及到服务端,又涉及到客户端,所以在搭建的时候一定要注意哪步是在Linux下搭建的,哪步是在win下操作的!!!!!这里我为了方便大家区分,每一步都标明了是在那个环境下执行操作!请仔细查看!~~~~~
(2)第七步服务器禁止 git 用户 ssh 登录服务器必须要做(如果你的git放在了网上,一定要必须做此操作),为什么吗??好吧,我告诉你,我的测试环境仅仅是在阿里云上面的测试环境中搭建的,好吗,这就有闲着蛋疼的人开始了,我猜他们一定是没什么事干。
见图:
大半夜2点多在暴力破解我的git用户(当时手机的短信一直哇哇的告警啊。。。。),还好我这仅仅是测试环境,还好我做了安全防护的内容,如果这是你的真实环境,那想想会有什么后果呢?????
好,git的搭建就讲到这里!~~~~~