前言:代码平台托管安全吗?
看这则新闻:
最近代码托管平台代码泄露火了一下,经理赶紧让我们未雨绸缪,把托管在开源中国的项目弄到本地来,哈哈,其实项目都捏在自己手里确实安全多了,但是毕竟建立本地仓库还是约束性太大,于是决定在自己的服务器里搭建git仓库(多少心里安全点哈)狗头保命
总的来说就是如何项目不开源?那就是搭建自己的git服务器
【我们的云服务器是CentOS7】供参考。
1.服务器安装git
sudo apt-get install git
(适合Debian系列linux系统,例如:Ubuntu,安装deb包的命令是“dpkg -参数” )
yum install git
(适合RedHat系列linux系统,例如:Centos ,安装rpm包的命令是“rpm -参数” )
1.创建git用户:(用来运行git
服务)
adduser git
2.设置密码:(尽量简短而不失复杂))
passwd git
3.切换到git用户
su 命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
su git
1.确定仓库位置
这里选择了/home/git/ 创建名为warehouse的仓库 运行:
sudo git init --bare warehouse.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用户:
su git
打开git位置:
cd /home/git ls -a
首先确认是否有ssh密钥:若有.ssh文件夹,进入查看是否有authorized_keys文件,如果都没有
创建.ssh文件夹
创建authorized_keys文件:
touch authorized_keys
编辑authorized_keys文件,将生成的公钥粘贴到文件内
项目肯定不止一个开发者,把所有的git账号的密钥诸葛追加到authorized_keys尾部即可。
这一步是防止使用git用户使用普通的bash
vim /etc/passwd
最后一行看到类似的:
更改为:
当试图使用git用户登录的是时候,报错
进入仓库目录执行:
chown -R git:git warehouse.git
(warehouse是自己起的仓库名)
接下来进行项目迁移
以上warehouse.git是我自建的空库
因为原来已经有在使用的仓库,所以要把项目迁移到新仓库
1.把本地仓库的项目变为纯仓库:
示例(我的项目名叫mySpider):
git clone --bare mySpider mySpider.git
2.将纯仓库放到git服务器上:
scp -r mySpider.git username@139.196.152.104:/home/git/
3.j继续进入本地仓库的项目内,查看当前项目的远程仓库:
示例(我的项目名叫mySpider):
cd mySpider
git remote - v
4.移除远程仓库:
git remote rm origin
5.添加远程仓库
git remote add origin git@139.196.152.104:/home/git/mySpider.git
6.设置本地分支关联远程分支:
git push --set-upstream origin master
仓库搭建完成,数据也迁移完成,最后克隆仓库项目:
git clone username@仓库地址:/项目.git
克隆项目之后修改然后提交:git push 出现bug:
remote: error: insufficient permission for adding an object to repository database ./objects remote: 远程:错误:权限不足,无法将对象添加到存储库数据库中。/对象远程:
解决:
1、修改仓库目录所属用户为 root,用户组为 root
chown -R 创建仓库时创建的用户名:所属组(云服务器用户名) /home/git
2、修改仓库目录为可写权限
chmod -R 777 /tmp (所有用户都有读、写、执行权限)
Copyright © 2013-2021 All Rights Reserved. 冠邦科技 版权所有 澧县冠邦信息技术服务中心 湘ICP备20007608号-1