服务器环境为centos
1.服务器端安装Git
执行指令 yum install -y git
2.服务器端创建Git用户,用于管理git服务,也可以不创建git用户,只需将下文git用户替换为对应用户
创建用户: useradd git
设置密码:passwd git
3.创建git仓库,假设仓库位置为/home/git/repository/test.git
mkdir /home/git/repository
git init --bare test.git //创建空仓库
注意:要将所有目录,包括父目录,owner全部改为git,否则git客户端推送时会无创建临时文件的权限,如下图所示
4.进制git用户ssh登陆服务器
在/etc/passwd文件 找到
git:x:500:500::/home/git:/bin/bash
修改为
git:x:500:500::/home/git:usr/bin/git-shell //git-shell 根据对应系统所在位置
修改后可以通过ssh使用git,但无法通过ssh登陆系统
5.服务器端Git打开RSA认证
/etc/ssh/sshd_config 文件
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
修改之后重启
/etc/rc.d/init.d/sshd restart
由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys
在 /home/git/ 下创建目录 .ssh,然后把 .ssh 文件夹的 owner 修改为 git
6.客户端创建ssh公钥和私钥
ssh-keygen -t rsa -C "zidingyizifuchuan"
此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub
id_rsa 是私钥
id_rsa.pub 是公钥
7.将客户端公钥导入服务器端/home/git/.ssh/authorized_keys文件
ssh git@192.168.1.1 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub //ssh端口默认为22
ssh -p 1800 git@192.168.1.1 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub //ssh端口为1800时
查看git用户目录下.ssh下是否存在authorized_keys文件.
修改.ssh目录权限为700 chmod 700 .ssh
修改.ssh/authorized_keys文件权限为600
8.客户端克隆远程仓库
git clone git@192.168.1.1:/home/git/repository/test.git //ssh端口默认为22
git clone ssh://git@192.168.1.1:1800/home/git/repository/test.git //ssh端口为1800时