安装
yum -y install git
创建git用户并设置密码
useradd git
passwd git
###创建git目录和一个空git仓库
cd /
mkdir /home/git
cd /home/git
git init --bare test.git
chown -R git:git test.git
客户运行git bash
git clone [email protected]:/data/git/test.git
# 远程服务器不同端口
git clone ssh://[email protected]:8888/data/git/test.git
这个时候需要输入密码
配置服务端的ssh访问
客户运行git bash,生成秘钥
ssh-keygen -t rsa -C "[email protected]"
该命令会产生两个文件: id_rsa对应私钥,id_rsa.pub对应公钥。
检查是否已经拥有ssh公钥和私钥:进入用户的主目录。
Windows系统:C:\Users\用户名
Linux系统:/home/用户名
Mac系统:/Users/用户名
然后查看是否有.ssh文件夹,此文件夹下是否有如下几个文件。
用户主目录的.ssh文件夹下
.ssh
├── id_rsa
└── id_rsa.pub # 我们要用的私钥
将id_rsa.pub中的内容写到服务器的authorized_keys文件中。
# 1.切换到git账号
$ su git
# 2.进入 git账户的主目录
$ cd /home/git
# 3.创建.ssh的配置,如果此文件夹已经存在请忽略此步。
$ mkdir .ssh
# 4. 进入.ssh目录并创建authorized_keys文件,拷贝客户端创建的的ssh的公钥,一行一个。
$ cd /home/git/.ssh
$ touch authorized_keys
# 5. 设置权限,此步骤不能省略,而且权限值也不要改,不然会报错。
$ chmod 700 /home/git/.ssh/
$ chmod 600 /home/git/.ssh/authorized_keys
禁止客户端shell登录
第一步:
给 /home/git 下面创建git-shell-commands目录,并把目录的拥有者设置为git账户。可以直接用git账号登录服务器终端操作。
$ su git
$ mkdir /home/git/git-shell-commands
第二步:修改/etc/passwd文件,修改
$ vim /etc/passwd
# 可以通过 vim的正则搜索快速定位到这行, 命名模式下 :/git:x
# 找到这句, 注意1000可能是别的数字
git:x:1000:1000::/home/git:/bin/bash
# 改为:
git:x:1000:1000::/home/git:/bin/git-shell
# 最好不要直接改,可以先复制一行,然后注释掉一行,修改一行,保留原始的,这就是经验!!!
# vim快捷键: 命令模式下:yy复制行, p 粘贴 0光标到行首 $到行尾 x删除一个字符 i进入插入模式
# 修改完后退出保存: esc进入命令模式, 输入::wq! 保存退出。