前言:代码平台安全吗? 看这个新闻:
最近代码管理平台的代码泄露火了,经理马上让我们做好准备,把开源的托管在中国的项目带到当地。 哈哈,其实项目掌握在自己手里确实是安全的,但还是做当地的仓库制约太大了。 于是,决定在自己的服务器上建设git仓库。 (多少心里的安全得到了保证
总的来说就是如何项目不开源?那就是搭建自己的git服务器
开整:一、安装参考git【我们的服务器是CentOS7】。
1 .在服务器上安装千兆位
sudo apt-getinstallgit (适用于debian系列的linux系统。 例如,安装Ubuntu、deb包的命令是“dpkg -参数”。 )
或:
yuminstallgit (适用于red hat系列的linux系统。 例如,安装Centos、rpm软件包的命令是“rpm -参数”。 )
二.创建git用户1 .创建git用户: (用于运行git服务)
审计工具
2 .设置密码:(尽可能短且不丢失复杂性) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。
密码构件
3 .切换为git用户
su命令用于更改为其他用户的id,必须输入非root用户的密码。
苏格托
三.初始化公库1 .确定仓库位置
在此选择名为/home/git/warehouse的仓库执行。
sudogitinit---- bareware house.git
此时warehouse.git是一个裸区,不工作,作纯粹的代码共享,用户也不鞥更改仓库的工作区
2 .设置公钥
2.1生成公钥
缺省情况下,SSH公钥存储在帐户主目录下的~/.ssh目录中。 请确认以下内容。
cd ~/.ssh
如果没有xxx.ras或xxx.pub文件,请生成以下文件:
ssh-keygen -t rsa
此处生成的. pub文件的内容是公钥。
选择密钥的保存位置并显示密钥密码。 不设定也没关系。 按enter键退出
显示键命令:
$ cat ~/.ssh/id_rsa.pub
2.2设置密钥
切换为git用户:
苏格托
打开git位置:
cd /home/git
ls -a
首先确认是否有ssh密钥。 如果存在. ssh文件夹,请转至以检查是否存在authorized_keys文件,否则为
创建. ssh文件夹
mkdir .ssh
创建authorized_keys文件:
touchauthorized_keys
编辑authorized_keys文件,并将生成的公钥粘贴到该文件中
项目一定有多个开发者。 将所有git帐户的密钥诸葛添加到authorized_keys末尾即可。
四.禁用shell登录的步骤是使用git用户不使用普通bash
vim /etc/passwd
在最后一行可以看到类似的东西:
改为:
尝试使用git用户登录时,报告了错误:
五、远程仓库权限问题列入仓库目录执行。
chown-rgit : git warehouse.git (warehouse是自己命名的仓库名称) )。
这样就完成了服务器的git仓库。 接下来进行项目迁移
六.数据仓库迁移以上warehouse.git是我自制的空库
因为已经有在使用的仓库,所以将项目转移到新仓库
1 .将当地仓库的项目改为净仓库:
例如(我的项目名为mySpider ) :
git clone-- baremyspidermyspider.git
2 .将纯仓库放在git服务器上:
scp-rmy spider.git username @ 139.196.152.104:/home/git /
3.j继续进入本地仓库的项目内,查看当前项目的远程仓库:
例如(我的项目名为mySpider ) :
cdmySpider
git remote - v
4 .删除远程仓库:
git远程RM origin
5 .添加远程仓库
gitremoteaddorigingit @ 139.196.152.104:/home/git/my spider.git
6 .设置本地分支相关的远程分支:
git push---set-upstreamoriginmaster
七、最终仓库建设完成,数据也随之转移,最终克隆仓库项目。
git clone username@仓库地址:/项目. git
克隆项目后,修改并提交: git push
发生错误:
远程:错误: insufficientpermissionforaddinganobjecttorepositorydatabase./objects远程3360
远程:错误:权限不足,无法将对象添加到存储库数据库。 /目标远程:
解决方案:
1、修改仓库目录的用户为root,用户组为root
创建chown -R仓库时创建的用户名:所属组(云服务器用户名)/home/git
2、将仓库目录修改为可写权限
chmod -R 777/tmp (所有用户都具有读写权限) ) )。