一、准备工作
1.需要准备git客户端和服务端,客户端我是用的windows10,服务端用的是装在windows上linux虚拟机。
2.linux系统需要有ssh服务,一般CentOS 7系统安装后都会默认自带的。
3.客户端需要安装git,下载地址
二、开始搭建
1.安装git
在服务端输入下面的命令
yum install -y git
中间不需要按什么,一直等它安装完成。安装完成后输入下面的命令查看版本号,可以查看的到就算安装成功了
git --version

2.新建git用户
-
添加用户
useradd git -
修改用户密码
passwd git -
先切换到git用户
su git输入密码进入 -
新建.ssh目录
mkdir .ssh -
新建authorized_keys文件
touch ~/.ssh/authorized_keys -
修改权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3.初始化仓库文件
-
新建仓库目录
先进入到git用户的目录下
mkdir -p Project/ -
新建git仓库目录
mkdir ./Project/test.git -
初始化git仓库
git init --bare ./Project/test.git
三、生成密钥
-
在windows系统上打开git bash,先生成个人用户信息
git config --global user.name "Your Name"
git config --global user.email "email@example.com" -
生成公钥和密钥
ssh-keygen -t rsa -C "你的邮箱"
过程中可以一直按回车就行 -
将本地公钥上传至git服务端上
scp -r id_rsa.pub root@serverip:/home/git/.ssh/id_rsa.pub -
再将刚刚上传的公钥添加到authorized_keys里面
cat id_rsa.pub >> authorized_keys
到这一步就算是把git仓库搭建好了,可以开始使用了
四、克隆远程仓库到本地
在客户端上打开git bash,输入以下命令
git clone git@serverip:/data/Project/test.git
能够看到远程仓库的test目录被克隆下来就算是成功了。
五、限制git用户远程登陆
git用户现在是有权限通过ssh远程登陆服务器的,这个比较不安全,如果要限制git用户远程登陆的就需要以下操作
先切换到root用户下,然后打开/etc/passwd文件
vi /etc/passwd
找到git用户的那段信息

在最后面加上 -shell

保存退出即可
当切换git用户的时候你就会发现无法登录了
但是这个时候你发现你无法在客户端上通过git pull或者push项目代码了,这个时候就需要在进一步优化一下
-
检查
git-shell是否已经在shells文件中
cat /etc/shells -
如果没有在里面,就找一下在哪个路径下
which git-shell
路径找到之后,手动将这个路径添加到/etc/shells中,保存退出
- 把git用户默认的shell替换成git-shell
chsh git -s $(which git-shell)
好了,现在你就发现可以正常的pull和push项目了,但是无法用git用户远程ssh登陆。
浙公网安备 33010602011771号