需求:搭建一个git服务器,满足十来号人git托管;比较简单的认证机制;
步骤如下:
1. Linux服务器需要先安装git;
2.创建一个名叫git的用户 adduser git //注意切换root权限。单独创建git用户,之后会限制以git用户登录服务器的操作。由于我们使用ssh认证方式托管项目,避免了认证用户对服务器的其它操作。
3.进入/home目录下会找到一个git文件夹,这是Linux给每个账户增加的用户文件夹。
a.进入git文件夹,创建 .ssh/ 文件夹, 进入.ssh/,创建authorized_keys 文件。
b. authorized_keys文件用于保存使用该服务人员ssh公钥。 // ssh公钥一般保存在 ~/.ssh/id_rsa.pub, 如果没有需要自行创建, ssh-keygen -t rsa -C "youremail@example.com"
4.选定一个文件夹作为git仓库。以 /srv/ 为例子:
a.创建一个git纯仓库 git init --bare example.git
b.通过 ls -al 查看,example.git 文件夹仍然属于root用户。修改文件夹拥有者。
chown -R git:git example.git
5.限制git用户对服务器操作
a.我们只希望git用户能对/srv下的项目有推送拉取的操作,不希望通过git用户登录服务器。可以使用git自带的git-shell控制.
b.编辑 vim /etc/passwd 文件, 找到这样的一行 git:x:1001:1002::/home/git:/usr/bin/bash
修改为 git:x:1001:1002::/home/git:/usr/bin/git-shell
c./usr/bin/git-shell 的路径可通过 whereis git-shell 查找
d.操作结束后,可尝试 ssh git@域名 登录,发现登录后立马退出。
至此,一个简单的git服务架设完成。
使用:
git clone git@服务器地址:/srv/example.git
进行正常拉取推送
加入小伙伴:
登录服务器 /home/git/.ssh/authorized_keys 增加小伙伴公钥
创建新的项目:
登录服务器进入 /home/git , git init --bare newone.git , 修改newone.git文件所属权限
局限性:
创建新项目操作麻烦;
权限认证单一;