有些代码不想传到开原仓库github或者码云,那么自己搭建git服务器将会是一个不错的选择。
准备工作
首先需要有一台Linux云服务器,推荐Ubuntu,安装git十分简单。并且需要有一个具有sudo权限的账号,一般是root
安装Git
1 | sudo apt-get install git |
创建Git用户
用来运行git服务
1 | sudo adduser git |
创建证书免密登陆
创建本机的公钥
1 | ssh-keygen -t rsa |
然后一路回车到底,就会在~/.ssh/目录下看到两个新创建的文件,id_rsa.pub和id_rsa,一个是公钥一个是私钥,这里打开公钥id_rsa_pub,复制里面的内容后面会用到。
用新创建的用户登录SSH服务器,并打开服务器上的目录/home/git,这里是新创建的用户根目录,一般情况下还没有创建.ssh目录的,需要运行ssh-keygen -t rsa命令来创建,最好不要手动创建,不然还要更改目录权限。创建好.ssh目录之后,cd进去,然后touch authorized_keys来创建authorized_keys文件,这个文件是用来记录客户端的公钥,以实现免密登陆。将之前在客户端创建的公钥内容复制到authorized_keys中,然后保存退出。
初始化Git仓库以做测试
假设在/home/git目录下
1 | git init --bare demo.git |
会出现一个demo.git目录,然后更改目录权限和所有者
1 | sudo chown -R git:git demo.git |
克隆Git仓库到本地
1 | git clone git@xx.xx.xx:/home/git/demo.git |
这时候按理说是不应该输入密码,直接克隆成功的,如果没有成功,说明服务器上的/home/git/.ssh和/home/git/.ssh/authorized_keys权限不对。
- **.ssh目录的权限必须是700 **
- .ssh/authorized_keys文件权限必须是600
更改权限sudo chmod -R 700 /home/git/.ssh,sudo chmod 600 /home/git/.ssh/authorized_keys
然后可以提交一下代码,测试一下是否成功。