虽然以前也搭过,但是重新搭建一次的时候还要重新从网络上查找资料;
最近想着别把租来的服务器荒了,自己搭个
Git
服务器放点东西上去,顺路记录一波搭建过程。
第一步
在服务器上安装 git
:
centos
:
1 | sudo yum install git |
ubuntu
:
1 | sudo apt-get install git |
第二步
创建 git
用户,用来运行git
服务
1 | sudo adduser git |
可以同时为git
用户修改密码
1 | sudo passwd git |
第三步
免密登录
通过证书的方式来通过ssh
使用git
功能,需要创建证书,并收集需要登录的用户的公钥文件(~/.ssh/id_rsa.pub
),导入到/home/git/.ssh/authorized_keys
文件内,一行一个;
公钥可以通过执行
ssh-keygen -t rsa -C "yourname@mail.com"
进行生成
修改authorized_keys
文件的权限
1 | chmod 600 authorized_keys |
这一步必须要做,不然验证的时候还是会需要让你输入密码,具体原因不知;
第四步
初始化git
仓库,找个地放用来放你的git
仓库,这里我选了/data/repositorys
这个路径;
1 | git init --bare TestGit.git |
git
创建一个裸仓库,裸仓库没有工作区,因为服务器上的git仓库纯粹为了共享,所有不能让用户直接登录到服务器上去改工作区,并且服务器的git
仓库通常以 .git
结尾。然后,修改owner
改为git
:
1 | sudo chown -R git:git TestGit.git |
第五步
禁用shell
登录:
处于安全的考虑,第二步创建的git用户不允许登录shell
,这可以通过编辑 /etc/passwd
文件完成。
1 | git:x:1003:1003::/home/git:/bin/bash |
改为:
1 | git:x:1003:1003::/home/git:/usr/bin/git-shell |
这样,git
用户可以正常通过ssh
使用git
,但无法登录shell
,因为我们为git用户指定的git-shell
每次一登录就自动退出。
第六步
验证,克隆远程仓库:
现在,可以通过git clone
命令克隆远程仓库了,在各自的电脑上运行:
1 | git clone git@server:/data/repositorys/TestGit.git |
如果服务器SSH
端口不是默认的22的话,可以这样:
1 | git clone ssh://git@server:port/data/repositorys/TestGit.git |
运行完成后,正常的情况下会出现以下提示:
1 | Cloning into 'TestGit'... |