美文网首页
linux下CentOS7搭建git仓库

linux下CentOS7搭建git仓库

作者: IT小池 | 来源:发表于2019-05-23 15:17 被阅读0次

1. 安装git

Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git

yum install -y git

安装完后,查看版本

git -version

windows下就是一键安装了

2. 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码

创建用户 git

[root@localhost /]# id git # 查看用户
[root@localhost /]# useradd git
[root@localhost /]# passwd git

设置 /home/git/cangku/test为版本仓库

[root@localhost /]# mkdir /home/git/cangku
[root@localhost git]# chmod -R 777 cangku/
[root@localhost git]# mkdir /home/git/cangku/test
[root@localhost git]# chmod -R 777 /home/git/cangku/test

test初始化为一个git仓库

[root@localhost cangku]# cd test
[root@localhost cangku]# git init --bare  // --bare 创建一个裸仓库

由于创建一个git账户来管理仓库,所以把 Git 仓库的 owner(属主/属组) 修改为 git

[root@localhost cangku]# chown -R git:git ./test

然后可以 ll 进行查看,然后就可以在windows下进行克隆项目

$ git clone ssh://git@192.168.1.100/home/git/cangku/test #可能需要输入git用户密码
或者
$ git clone ssh://root@192.168.1.100/home/git/cangku/test #此时输入root密码

3.服务器端 Git 打开 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

保存并重启 sshd 服务:

[root@localhost ssh]# /etc/rc.d/init.d/sshd restart
或者
service sshd restart
或者
/bin/systemctl restart sshd.service

AuthorizedKeysFile 得知公钥的存放路径是.ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git(上面创建的用户git),所以实际存放公钥的路径是/home/git/.ssh/authorized_keys

在 /home/git/ 下创建目录 .ssh

[root@localhost /]# mkdir ~/.ssh
[root@localhost /]# cd ~
[root@localhost /]# ll -a 

注意:把 .ssh的目录权限改成可写入,不然后面导入会提示无权限

[root@localhost git]# chmod -R 777 .ssh

将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件,在 widnows下的桌面中打开 git bash,执行

Administrator@PC-20190319UHLW MINGW64 ~/Desktop
$ ssh git@192.168.1.100 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
git@192.168.1.100's password:

执行完毕,回到服务器端,查看 .ssh 下是否存在 authorized_keys 文件:

[root@localhost git]# cd .ssh
[root@localhost .ssh]# ll

也可以查看下 authorized_keys是否是客户端生成的公钥

[root@localhost .ssh]# cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDL3bQwEDbwQ+ghkq/BO8rj8AExFWldopPMyWI6NHfVHCzMrHqVcJrLG7RtEDQD+lTDJIXjKF/SoxLfTyLEQrazbbP/JJImo4XJVTt+KGc3z6gw4vQndz0CPmpKzYECx6rmoicYXTp/amX/T9O4TTJUI3de5fY/pwy5stJ3Fm4SlFGic3DSJDiIlRCPECtUheZ3Rxt9bx6CXdaCmu3m5pZbWnOuhV8VhAmPY5kA5eR1iG36nnlMmZZyr50lPN0rGFGFOzJ7FjMCyt6NlCpVqvL+zt2TtCzwtYDv4dQrKCIDBnTisz+Y0R/bj22vosixYij+0WTEzK6Vm81wkw8nkLPh Administrator@PC-20190319UHLW

重点:更改 .sshauthorized_keys权限

[root@localhost git]# chmod -R 700 .ssh
[root@localhost git]# cd .ssh
[root@localhost .ssh]# chmod -R 600 authorized_keys 

注意:修改 .ssh 目录的权限为 700;修改 .ssh/authorized_keys 文件的权限为 600

4. 禁止 git 用户 ssh 登录服务器

之前在服务器端创建的 git 用户不允许 ssh 登录服务器,编辑 /etc/passwd,找到:

git:x:502:504::/home/git:/bin/bash

修改为

git:x:502:504::/home/git:/bin/git-shell

此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。

5. 设置git钩子(push之后,项目同步)

进入我们的裸仓库的 hooks文件夹,然后新建一个 post-receive 文件。

cd hooks/
vim post-receive

加入如下内容:

#!/bin/bash
git --work-tree=/www/test checkout -f

其中/www/test为你实际需要同步的站点目录。
然后修改post-receive为可执行文件(其实这就是一个脚本文件)

chmod +x post-receive

post-receive的原理就是,当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。其实git还提供了很多其它动作的钩子。
注意:同时你还需要修改你的web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。(你也可以通过添加git用户到相应的用户组来解决问题)
修改所属用户

chown git:git -R /www    # 修改所属用户

设置好钩子后,当你本地再次执行push的时候,你会发现你web目录的文件也同步的更新了。

参考url:http://www.cnblogs.com/dee0912/p/5815267.html

参考url:https://www.cnblogs.com/gaocy/p/8546345.html

相关文章

  • linux下CentOS7搭建git仓库

    1. 安装git Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git 安装完后,查看版...

  • 一键快速搭建git仓库 并实现仓库和代码分离

    CentOS7上git环境的搭建 和 仓库的创建见这两篇文章 git环境的搭建:https://www.jians...

  • GIT服务器搭建

    在Linux下搭建git服务器,使用apt-get方式安装 安装git 添加git用户 初始化仓库 本地clone...

  • git服务器搭建

    最近要用自己的linux搭建一个git仓库存放代码,所以折腾了一下git服务器: git下载 账号建立 切换roo...

  • 在自己服务器搭建git仓库

    在网上有很多教程如何搭建。记录一下搭建git仓库的一些理解Git 服务器搭建我们远程仓库使用了 Github,Gi...

  • 在linux环境下搭建node环境

    在linux环境下搭建node环境有三种方案: 1、使用nvm(node包管理工具)nvm的git仓库地址[htt...

  • Centos7下使用gitolite搭建git服务器

    Centos7下使用gitolite搭建git服务器 安装较新版本Git 因为安装gitolite需要使用git,...

  • linux下建立git仓库

    1,linux下建立git仓库 1.1、安装Git $ yum install curl-devel expat-...

  • GIT

    版本控制系统 GIT的安装 Windows下 Linux下 GIT操作 设置git ​ 后续远程仓库需要用到...

  • git初学(二)

    这部分 主要讲解怎么把本地的git仓库同步到远程的仓库(github) 一、linux下配置Git操作免登录ssh...

网友评论

      本文标题:linux下CentOS7搭建git仓库

      本文链接:https://www.haomeiwen.com/subject/ldtbzqtx.html