Git服务器搭建及外网映射

#安装依赖库
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker

#卸载低版本git
yum remove git

#下载git
wget https://github.com/git/git/archive/v2.9.2.tar.gz
cp v2.9.2.tar.gz /usr/local/
cd /usr/local/
tar -xzvf v2.9.2.tar.gz

#安装gcc
yum -y install gcc automake autoconf libtool make
yum install perl-ExtUtils-Embed -y
make prefix=/usr/local/git all
make prefix=/usr/local/git install

#配置环境变量
vim /etc/profile 
#添加以下语句
export PATH="/usr/local/git/bin:$PATH" 
source /etc/profile

#查看版本
git --version

#.将git设置为默认路径
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 
ln -s /usr/local/git/bin/git-shell /usr/bin/git-shell 

#创建用户组及用户git
groupadd git
useradd git -g git
passwd git

#切换到git用户下执行,否则git仓库需要改权限
su git
mkdir .ssh
cd .ssh
touch authorized_keys

#在客户端生成公钥密钥
git config --global user.name "lucien"
git config --global user.email "qa***xm@163.com"
ssh-keygen -t rsa -C "lucien"
#然后把lucien.pub上传到服务器
scp id_rsa.pub git@192.168.1.91:~/

#在服务器端写入authorized_keys
cat ~/lucien.pub >> ~/.ssh/authorized_keys

#初始化仓库,仅作为服务器存储用
git init --bare HM1_android.git
git init --bare HM1_ios.git

#这里注意一下权限问题,这个问题折磨了我1天,
#另外SVN哪里我怀疑也是没有权限导致用户无法访问,后续有空修改
chmod 755 /home  #这里不能是700,否则samba不能访问了
chmod 700 /home/git
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys
chown git /home
chown git /home/git
chown git /home/git/.ssh
chown git /home/git/.ssh/authorized_keys

#打开证书认证
vim /etc/ssh/sshd_config
#添加该条目
RSAAuthentication yes
#放开该注释
PubkeyAuthentication yes
#自带不用修改
AuthorizedKeysFile .ssh/authorized_keys

#重启sshd
systemctl restart sshd.service

#禁止ssh登陆
vim /etc/passwd
#修改一下内容
git:x:1001:1001::/home/git:/bin/bash
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

关于外网访问的设置,参考外网SVN,把端口改为22即可。

推荐阅读更多精彩内容