1、Git用户和用户组
groupadd git
useradd git -g git
passwd git
2、创建证书
切换到git用户创建证书
su git
cd /home/git
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
注意:.ssh的权限必须是700,authorized_keys的权限必须是600
生成公钥和私钥文件
cd .ssh
ssh-keygen -t rsa
首先会让你输入要保存公钥的位置,直接回车即可,接着会提示让你重复一个密码两次,如果不想再使用公钥的时候输入密码,直接回车即可。完成后会在home目录下的.ssh目录中生成两个文件id_rsa(私有密钥)和id_rsa.pub(公钥)。
3、初始化Git仓库
首先,我们选定一个目录作为Git仓库,假定是/home/git/report.git
cd /home
mkdir git
chown git:git git
cd git
git init --bare report.git
以上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git:
chown -R git:git report.git
4、客户端安装(Mac)
下载git客户端,下载地址为:https://git-scm.com/download/mac
5、创建ssh
5.1 检查SSH key
打开终端,运行cd ~/.ssh
如果路径下无文件,直接跳过下一步,如果有代表有ssh key,需进行第二步进行备份
5.2 备份已有的key,(如果有的话)
mkdir key_backup
mv id_rsa* key_backup
5.3 生成SSH key
ssh-keygen -t rsa //生成key证书公钥私钥 一路回车就ok了
打开终端,输入open ~/.ssh
,查看id_rsa.pub这个文件并打开拷贝key值
6、 在服务器操作命令
[root@iZuf6fazwjb6lb3z82smzoZ /]# su git //切换git用户
[git@iZuf6fazwjb6lb3z82smzoZ /]$ cd home //进去home(git用户的公钥存放)
[git@iZuf6fazwjb6lb3z82smzoZ home]$ cd git //打开git文件夹
[git@iZuf6fazwjb6lb3z82smzoZ ~]$ cd .ssh //打开公钥文件夹
[git@iZuf6fazwjb6lb3z82smzoZ .ssh]$ touch authorized_keys //创建公钥文件或打开
[git@iZuf6fazwjb6lb3z82smzoZ .ssh]$ vim authorized_keys //将刚才复制的那一串公钥粘贴进去
如果没有.ssh文件 需要你在上一步生成秘钥和公钥
这样的话,如果是多人需要用到这个用户的话,就需要每个人把自己电脑上的公钥给管理员,然后管理员在服务器进行添加就可以,这样下次登录就不需要密码验证了,直接验证你电脑上的公钥即可.
如果发现home文件切换用户无法进入,使用chown -R git:git home
更改所有者
后边会写到钩子自动同步更新,所以这里生成这个公钥,同样在服务器上也要生成一个然后放进.ssh里边的authorized_keys里边就好
chmod 700 .ssh
cd .ssh
chmod 600 authorized_keys
按照上边给予权限即可!
7、这一步特别重要,很多网友都会忽略,导致服务器上公钥没作用!
记得切换root用户,git没权限!
vim /etc/ssh/sshd_config
RSAAuthentication yes #开启RSA认证功能
PubkeyAuthentication yes #开启公匙认证
StricModes no #据说不改会强制要求登录用户和文件拥有者用户相同
我再配置的过程中发现这几项内容在我的sshd_config中并不齐全,需要自行加进去,而且加完之后重启后还是不能正常使用,查了很多其他的文章,说是修改ssh_config中的配置,然后我又修改了ssh_config中的文件内容,同样的这几项并非全有,自己添加进去
Host *
RSAAuthentication yes
PubkeyAuthentication yes
GSSAPIAuthentication yes //这里一般都是放开的不用动而且两个文件都有段代码而且都是放开的
重启sshservice sshd restart
8、创建本地仓库
打开文件夹或者创建新的文件夹
好了,现在创建了一个1.txt文件.接下来,推送到服务器上的仓库
$ git remote add origin git@ip:/home/git/report.git //本地连接远程库
连接ok后可以通过 git remote -v 来查看 如果不对可以用 git remote rm origin 来删除
接下来推送到服务器的仓库
9、接下来,在服务器上将仓库的文件给克隆下来!
git clone git@ip:/home/git/report.git //克隆服务器仓库数据
克隆后,我们要用git 的钩子写个自动执行程序