在Microsoft Azure上搭建Git服务

Git是程序员的好帮手,不但是一个时间机器,帮助你穿越到过去审视代码,更提供了一步步积累的里程,不积跬步无以至千里。本地的Git仓库固然方便,但是在协作的时候自然需要一个集中式的服务器,如果一时没有合适的Git服务供应商,不如自己搭一个丰衣足食喽。基本思路就是借助Microsoft Azure的Virtual Machine技术创建一个Linux主机,在上面开启并配置Git服务,然后再配置授权与认证就可以了。

首先需要创建一台Linux主机,我选择的是Ubuntu 14.04 LTS。创建好之后,ssh到主机以后输入以下命令更新系统软件包:

sudo apt-get update
sudo apt-get dist-upgrade

然后使用如下命令安装Git服务:

sudo apt-get install git-core

现在让我们来创建Git仓库。出于安全的考虑,需要创建一个git账号管理仓库以及用户:

sudo adduser git

接下来我们创建一个目录作为Git仓库根目录:

mkdir ~/repo

安全起见,我们希望这个目录只被git用户全权管理,所以需要安装ACL包并更改权限:

sudo apt-get install acl
chmod 700 ~/repo
setfacl -m defaut:user::rwx ~/repo
sudo chown git:git ~/repo

方便起见,我们创建一个链接:

sudo ln -s /home/$USER/repo /git

输入以下命令对照确认万事俱备:

getfacl git
# file: git
# owner: git
# group: git
user::rwx
group::r-x
other::r-x

最后我们来配置授权与认证。虽然用户将共享git账号,如果让每个用户使用自己的证书认证ssh登陆,便可以方便区分用户了。

首先创建公钥私钥对,可以通过Git Bash来完成:

ssh-keygen -t rsa -b 2048 -f qizh.pem -N '' -C "git pass for qizh"

其中qizh.pem 是私钥而qizh.pem.pub是公钥。然后回到Linux命令控制台中,输入:

mkdir /home/git/.ssh
echo "ssh-rsa AAAAB[…]HOw== git key for qizh" >> /home/git/.ssh/authorized_keys

注意把双引号中的字符串替换成qizh.pem.pub中的内容,这样Git会认可持有qizh.pem的用户了。记得通过scp命令把qizh.pem复制到本地。

至此, 我们便可以通过证书ssh登陆(请参考以SSH连接Azure上Linux虚拟机一文)并创建项目:

ssh -i ./qizh.pem git@yourhost.cloudapp.net
git init --bare yi.git

现在便可以通过任意开发工具去同步啦,以下是用NetBeans来Clone Repository的截图,有图有真相:

本文大量参考了Git on the cloud with Windows Azure一文,在此表示感谢。

 



张 琪