GitOPEN's Home.

VirtualBox中CentOS配置git服务器

Word count: 1,313 / Reading time: 6 min
2017/07/10 Share

前言

在管理自己的代码的时候,我一直使用github。有的时候,私有项目不想公开,如果还要放到GitHub上,那就必须要花钱。解决这个问题的方法其实也很简单:在自己电脑上用虚拟机(VirtualBox)跑一个服务器(CentOS),配置好ssh和git server。正所谓:史上距离你最近的服务器。

配置SSH

SSH是程序员链接服务器的居家必备之花露水啊!因此在VirtualBox中安装好CentOS(最小化安装)后,首要工作就是配置它的SSH。

安装SSH

  1. 更新系统:

    1
    yum update
  2. 安装openssh-server:

    1
    yum install -y openssl openssh-server
  3. 启动SSH服务:

    1
    systemctl start sshd.service
  4. 设置开机启动ssh服务:

    1
    systemctl enable sshd.service

配置免密登录

1.在客户端系统(我的是Mac)终端中生成密钥:

1
ssh-keygen -t rsa -C "gitopen@gmail.com"

注意输入自己的邮箱

2.会提示输入密码,但也可以留空(至少我是留空,输入密码太麻烦)。

3.完成后会在.ssh目录下生成id_rsaid_rsa.pub两个密钥文件。

注意保存这两个文件,哪怕你换了电脑,重做了系统,也要记得备份。

4.查看VirtualBox中CentOS的ip地址:
运行CentOS,root用户登录后输入:

1
ip addr

如图所示:CentOS ip地址

5.在客户端中用ssh连接CentOS:

1
ssh root@xxx.xxx.xxx.xxx -p 22

xxx.xxx.xxx.xxx是CentOS的ip地址,此时还需要输入CentOS的root账户密码。此时之所用SSH登录,是为了方便拷贝密钥到authorized_keys。

6.在VirtualBox中的CentOS服务器中进行配置:

1
2
3
4
5
6
//创建.ssh文件夹:
mkdir .ssh
//创建authorized_keys文件:
touch .ssh/authorized_keys
//修改authorized_keys的权限:
chmod 600 .ssh/authorized_keys

7.在客户端(Mac)中查看id_rsa.pub,并复制其中的密钥。

1
cat .ssh/id_rsa.pub

8.在CentOS中打开authorized_keys,将刚才复制的密钥粘贴进去。

1
vi .ssh/authorized_keys

9.配置完毕了。

客户端(Mac)配置CentOS别名

1.为VirtualBox中CentOS的网络设置端口转发
设置网络类型为NAT,如图所示:
CentOS NAT网络

设置端口转发,如图所示:
CentOS 端口转发

以上操作是为了在客户端(Mac)中设置别名登录的时候,将ip地址写为127.0.0.1,避免每次启动CentOS自动获取ip的变化,需要修改太麻烦。

2.客户端(Mac)配置CentOS的别名

1
vi .ssh/config

输入以下:

1
2
3
4
Host cent
HostName 127.0.0.1
User root
Port 4444

cent为别名,可以自由设置。

很方便的连接CentOS

1
ssh cent

配置和安装git服务器

所有操作可在客户机(Mac)上用SSH连接CentOS进行

1.CentOS安装最新git,依赖库安装

1
2
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker

2.卸载低版本Git

1
yum remove git

3.创建git目录并进入

1
2
3
cd /usr/local
mkdir git
cd git

4.下载最新版Git 2.13.2

1
wget https://github.com/git/git/archive/v2.13.2.tar.gz

截至目前最新版是2.13.2,可以到https://github.com/git/git/releases 复制最新版链接进行下载。

5.解压到git目录中

1
tar -xzvf v2.13.2.tar.gz

6.安装v2.13.2版Git

1
2
3
cd git-2.13.2
make prefix=/usr/local/git all
make prefix=/usr/local/git install

编译过程稍微较长,耐心等待

7.添加到环境变量中
打开/etc/profile

1
vi /etc/profile

加入

1
export PATH="/usr/local/git/bin:$PATH"

使配置立即生效

1
source /etc/profile

8.查看git版本

1
git --version

9.将最新版git设置为系统默认,避免克隆时出错

1
2
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack

10.最新版v2.13.2 Git安装成功

创建git用户组和添加用户

1.添加用户组合用户,并设置密码

1
2
3
groupadd git
useradd git -g git
passwd git

切换到git账户

1
su -git

2.证书登录,免密码使用git

创建.ssh目录和.ssh/authorized_keys文件,将客户端(Mac)的id_rsa.pub中的密钥添加到authorized_keys文件中

修改目录和文件的权限

1
2
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

初始化Git仓库

1.我的所有仓库都放在gitrepos目录下,因此我创建了这个目录

1
2
3
cd /home/git
mkdir gitrepos
cd gitrepos

2.初始化第一个test仓库

1
git init --bare test.git

本地客户端克隆仓库

在客户端(Mac)上克隆CentOS上的test.git库

1
git clone git@cent:/gitrepos/test.git

cent是章节2.3中设置的CentOS的SSH连接别名,也可以换成相应的ip地址

禁止Shell登录

如果你是在远程的VPS服务器上配置git服务器,那么为了安全考虑,可以禁止Shell登录;如果像本文的初衷那样,是为了构建史上距离你最近的服务器,那么这一步就可以不做。

切换到root账户:

1
su

编辑/etc/passwd文件:

1
vi /etc/passwd

将这一行:

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

替换为:

1
git:x:502:502::/home/git:/usr/local/git/bin/git-shell

结语

通过用Virtualbox在本机上构建CentOS,方便于开发人员进行测试;通过在CentOS上搭建自己的Git服务器,可以将自己独立开发的代码很好的管理与备份。


欣慰帮到你 一杯热咖啡
【奋斗的Coder!】企鹅群
【奋斗的Coder】公众号
CATALOG
  1. 1. 前言
  2. 2. 配置SSH
    1. 2.1. 安装SSH
    2. 2.2. 配置免密登录
    3. 2.3. 客户端(Mac)配置CentOS别名
    4. 2.4. 很方便的连接CentOS
  3. 3. 配置和安装git服务器
  4. 4. 创建git用户组和添加用户
  5. 5. 初始化Git仓库
  6. 6. 本地客户端克隆仓库
  7. 7. 禁止Shell登录
    1. 7.1. 结语