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登录!分两步:
- 服务器上仍然是gitadm用户下进入/home/gitadm目录,创建git-shell-commands目录;
- 切到root用户,编辑vim /etc/passwd,将
gitadm:x:1002:1002::/home/gitadm:/bin/bash
改为
gitadm:x:1002:1002::/home/gitadm:/bin/git-shell