最近参加一个比赛,不想公开源代码,但是github私有仓库的学生认证十分麻烦,于是每个月交了20$左右用了bitbucket的私有仓库,但是不知道因为被墙还是怎么clone仓库速度不超过20k就算了吧,还老是clone一般失去连接。于是捉摸着自己搭一个git服务器,刚好git对此也有良好的支持,操作起来并不复杂。
首先讲一下我的环境,避免环境不一样导致各种各样的问题:
腾讯云服务器ubuntu16.04 LTS 64位
root@xxxx:xxxx# uname -a
Linux VM-88-208-ubuntu 4.4.0-91-generic #114-Ubuntu SMP Tue Aug 8 11:56:56 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
1、安装git(我以root权限在运行,普通用户前面加sudo,没有sudo权限emm)
apt-get install git
2、添加git用户,对用户信息的配置,基本配置的话除了y其他回车就好
3、找一个文件夹作为仓库目录,我这里用了刚才创建用户的home目录
4、创建证书登录,创建/home/git/.ssh/authorized_keys
文件,用于保存可登陆证书,一个id_rsa.pub一行
5、初始化一个空仓库,
x
如果不是以git创建就把owner改为git
6、从本地克隆
git clone git@xxxx:/home/git/repository/WannaWin.git #xxxx为ip地址
其余pull和push操作和普通git仓库相同。
Tips:
1、ssh公钥生成(先安装git):在本地随便目录鼠标右键,git bash here,按下面操作,把cat的内容全部添加进第四步的文件
ssh-keygen -t rsa -C "自己邮箱"
# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc...
2、修改git账户的shell登录
usermod -s /usr/bin/git-shell git #git为前面创建的用户名
3、端口通信问题,git使用ssh通信,所以默认端口为22,云服务器注意安全组策略是否允许22号端口通信,以及防火墙(iptables)等配置