在 Ubuntu 中架设 git 服务器
自打有个 VPS ,真是想怎么折腾怎么折腾。以前经常像别人推荐 git,那有人就会问,git 这么好,那你来搭一个?奈何那时只会用不会搭,现在有机会了,自己搭了一个,暂时没有用到 Gitosis ,过程既轻松又愉悦,在这里分享记录一下
安装
1 | sudo apt-get update |
创建用户
git 自带了 git-shell 工具,它可以限制 Git 库所属用户的活动范围,只要把它设为此用户登入的 shell,那么该用户就无法使用普通的 bash 或者 zsh 等 shell 程序
1 | which git-shell |
这里我们创建了一个带用户主目录的 git 用户,shell 指定为 git-shell
创建登录公钥
客户端可以运行 ssh-keygen 命令来生成SSH 公(秘)钥,参数 t 为加密方式(除 rsa 外还有 ecdsa 和 dsa ,ecdsa 生成的密钥更小,安全性更高,但貌似有些厂商因专利问题,暂未提供支持),参数 C 为 comment
1 | ssh-keygen -t rsa -C "your_email@example.com" |
它先要我们确认保存公钥的位置(.ssh/id_rsa),然后它会让我们重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空
1 | Generating public/private rsa key pair. |
接下来,我们在服务端 git 用户家目录下创建 .ssh 文件夹:
1 | sudo mkdir .ssh |
可以把客户端用户的公钥放在 /home/git/.ssh/ 目录下,然后将公钥的内容输出重定向到 /home/git/.ssh/authorized_keys 文件:
1 | cat id_rsa.pub >> authorized_keys |
这里需要注意用户权限问题,authorized_keys这个文件的权限一般设置为 600,不能给它的其他用户设置可写权限,比如图方便给个 666 等,否则就是下面这个情形:
1 | it clone git@zencode.cn:/home/git/test.git |
新建 git 仓库
在 git 家目录下,创建一个裸仓库:
1 | sudo git init --bare test.git |
记得要修复权限,不然客户端可能会无法 push
1 | sudo chown -R git:git test.git |
提交代码到远程仓库
现在,我们可以克隆远程仓库了:
1 | git clone git@zencode.cn:/home/git/test.git |
最后,提交代码后,第一次 push 到远程:
1 | git push -u origin master |