使用gitosis用户管理
→安装
首先,切换python2来安装
yum install -y python-setuptools
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
然后,修改/user/local/bin/gitosis-三个文件的第一行,python后面加2.7
经过上面的修改,大环境中python版本仍为3.6,而gitosis会自行应用2.7
→环境搭建
本地公钥生成,做为管理的初始公钥
生成公钥命令:ssh-keygen -t rsa
注意生成后把.pub的结尾,把@后面数字开头或者有_的都去掉,本人直接改成@localhost.
为此,我还去改造了命令提示符,但生成的公钥匙结果依然依赖hostname
https://www.cnblogs.com/xiaofeiIDO/p/8037331.html
并使用
- su - gitfarmer
- gitosis-init<~/new.pub
上面这条命令2,后台会执行一系列操作,比如生成一个gitosis-admin的仓库,把new.pub中的内容移至仓库的keydir目录中,同时公钥文件名称与仓库中的gitosis.conf里的memebers名一致。

最后,由于公钥匙是gitfarmer用户下生成的,所以,另建立了manage_instance目录,在里面
- git clone gitfarmer@127.0.0.1:repositories/gitosis-admin.git
此时,管理已经具备功能而且是在服务端本地来管理,安全分离。
客户端应用
→生成应用者的公钥
https://www.jianshu.com/p/ba6efe6bf60d
一般客户端为window且安装了git bash。下面就是在git bash中生成自己公钥匙的过程。

把id2cvm.pub上传到keydir中,然后,修改gitosis.conf增加你要管理的代码仓库。
然后,git commit.

事实上发现,通过命令行建立的好像并不被git bash接受,最后,还是用了git gui中的工具,生成了默认的id_rsa.pub才有效果。
ssh -Tv gitfarmer@hostname是很好的工具,但有时你发现没有反应这是因为你的服务端并未设置欢迎语录而已,需要看日志中是否22端口已经登录成功。并且要看最后的返回值是否为0来证明测试成功。
→在服务端建立裸仓库来对应客户端
原以为gitosis会代劳这个动作,实践发现需要自己来,有些帖子说的不对。
→客户建立仓库关联,推送代码
本人在git bash中操作系列命令:
mkdir BL_main
cd BL_main
git init
vim readme.md
git add .
git commit -m "first import"
git remote add origin gitfarmer@182.XXX.181.XXX:repositories/BL_YTF_prj.git
git push origin master
最后一条会跳出让你输入服务端登录ssh密码,并且此前在服务端~/respositories/已经建立了相应的裸仓库。
→在客户端多个公钥匙对应多个仓库的管理
在windows下,git bash会找到用户目录下.ssh/config文件来判断,如果你配置了分支,就会根据你请求的@后面值来查找config中的HostName来匹配
$ cat ~/.ssh/config
HOST mycvm
HostName 182.XXX.181.XXX
User gitfarmerXXX
Port 22
#PreferredAuthentications publickey
IdentityFile C:\Users\user\.ssh\id_rsa
HOST github
HostName github.com
PreferredAuthentications publickey
IdentityFile C:\Users\user\.ssh\id2cvm
上面的mycvm就是你命令中要给出的
ssh -Tv gitfarmer@mycvm
如果测试成功,就说明分支判断了,支持多公钥管理
附录
https://blog.csdn.net/harry_haiwei/article/details/77714651 https://www.cnblogs.com/yshyee/p/4288465.html https://www.webyang.net/Html/web/article_257.html
原理指导
把用户gitfarmer加入到sudo组中:
https://blog.csdn.net/qq_39290007/article/details/81125750
同一主机多个git ssh公钥配置:
https://blog.csdn.net/yigehui12/article/details/89333264