centos7搭建GIT服务器

CentOS7上搭建git服务器

一.     安装git

可以切换到root用户,执行yum install -y git即可。

安装完成后可以通过如下命令查看是否安装成功,显示出版本号说明安装成功:

[root@version-server ~]# git --version
git version 1.8.3.1

二.     添加git管理账户

依次执行:

[root@version-server ~]# adduser gitadm
[root@version-server ~]# passwd gitadm

完成后可以看到:

[root@version-server home]# ls -al
total 0
drwxr-xr-x.  4 root   root    33 Jan  2 04:15 .
dr-xr-xr-x. 17 root   root   242 Jan  1 19:57 ..
drwx------.  2 gdcni  gdcni   83 Dec 27 22:48 gdcni
drwx------.  2 gitadm gitadm  62 Jan  2 03:28 gitadm

 

三.     用ssh公钥管理git权限

3.1 服务端配置ssh访问

  • 切换到前一步添加的gitadm用户,并进入/home/gitadm目录;
  • 新建文件夹:mkdir .ssh,并进入/home/gitadm/.ssh目录;
  • 新建文件:touch authorized_keys
  • 设置权限(注意不要用sudo):
[gitadm@version-server .ssh]$ chmod 700 /home/gitadm/.ssh/
[gitadm@version-server .ssh]$ chmod 600 /home/gitadm/.ssh/authorized_keys

3.2 客户端生成ssh私钥并添加到服务器

3.2.1 PC客户端

  • https://git-scm.com/download/win下载PC客户端并安装;
  • 安装完毕后在任意目录点击鼠标右键,打开Git Bash Here,并执行ssh-keygen -t rsa -C “你的邮箱名”。执行过程中全部缺省回车即可;
  • 进入c:/users/***/.ssh,用任意文本编辑工具软件打开id_rsa.pub,拷贝出其中的全部内容到服务器的authorized_keys。注意:拷贝过来的内容没有换行,每个用户的拷贝内容在authorized_keys中占单独的一行;

3.2.2 Linux客户端

  • 通过yum或apt-get安装git;
  • 执行ssh-keygen -t rsa -C “你的邮箱名” 。执行过程中全部缺省回车即可。注意看最后提示id_rsa.pub的保存路径,通常是/root/.ssh/;
  • 切换到root用户后进入/root/.ssh/,vi打开id_rsa.pub,拷贝出其中的全部内容到服务器的authorized_keys。注意:拷贝过来的内容没有换行,每个用户的拷贝内容在authorized_keys中占单独的一行;

四.     创建并使用git仓库

服务器端仍然使用gitadm账号进入/home/gitadm目录,新建文件夹mkdir test.git,并进入test.git文件夹。然后执行如下命令,完成裸仓库的创建:

[gitadm@version-server ~]$ mkdir test.git
[gitadm@version-server ~]$ cd test.git/
[gitadm@version-server test.git]$ git init --bare
Initialized empty Git repository in /home/gitadm/test.git/

好了,现在PC客户端在Git Bash Here中就可以通过“git clone git@服务器IP或域名:test.git”这条命令将test仓库克隆到本地了。至于git的其它命令,如status、update、add、commit、push、branch等,请自行百度。举个栗子吧:

  • 在PC机D盘git文件夹中鼠标右键打开Git Bash Here;
  • 执行git clone gitadm@192.168.1.48:test.git
  • 此时git文件夹下出现一个test文件夹,进入此文件夹,可以任意创建子文件夹或拷贝文件进来;
  • 执行git status,可以查看相对于git本地仓库以及服务器仓库,本地变化了哪些文件;
  • 执行git add .,可以将所有变化的文件提交到本地仓库;
  • 执行git commit -m “******”,可以为本次提交动作编写注释说明;
  • 执行git push -u origin master,将本地仓库的变化提交到服务器上的master分支;
  • 此时在另一台PC机上对同一test.git仓库执行git update,就可以将上述提交更新到本地。

另外注意,首次进入Git Bash Here时,请先通过如下命令配置使用者的邮箱名和名称,便于查看git仓库的修改历史:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

对于Linux系统,执行的命令完全相同。

五.     关闭git管理账户shell登录

之前做了添加客户端ssh公钥到服务器的操作,导致客户端可以直接通过shell远程登录服务器,这样显然不安全。那么就禁用gitadm的shell登录!分两步:

  1. 服务器上仍然是gitadm用户下进入/home/gitadm目录,创建git-shell-commands目录;
  2. 切到root用户,编辑vim /etc/passwd,将
gitadm:x:1002:1002::/home/gitadm:/bin/bash

改为

gitadm:x:1002:1002::/home/gitadm:/bin/git-shell

 

posted @ 2019-01-03 19:41  鸟瞰的鸟  阅读(322)  评论(0编辑  收藏  举报