求问这种手机壳怎么穿挂绳图解绳怎么用

使用gitosis的来配置管理的git服务器端
每天15篇文章
不仅获得谋生技能
更可以追随信仰
使用gitosis的来配置管理的git服务器端
作者:Elton,发布于
1. 安装git
emerge -av dev-util/git
2.安装gitosis
git环境默认是可以直接使用的,但需要为每个成员开ssh权限帐号,且各个仓库之间的交叉权限管理很麻烦,所以需要使用gitosis, 它无需为每个开发人员开设ssh帐号,安全方便。
emerge -av gitosis
如果提示这个包被mask了,需要编辑/etc/portage/package.keywords文件,在里面加入
dev-util/gitosis ~amd64
3.生成公钥
在客户端使用
ssh-keygen -t rsa
来生成ssh的key,注意你的主机名需要是全部英文字符,不能有下划线或者.之类的特殊字符,否则后面在服务端生成版本库的时候会报错。
4.上传公钥
从客户端把刚刚生成的公钥上传到服务器上。
scp ~/.ssh/id_rsa.pub USER@YOUR_SERVER:/tmp
5.在服务端生成管理库
sudo -H -u git gitosis-init & /tmp/id_rsa.pub
成功的话,你将看到类似下面的提示:
Initialized empty Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/
设置post-update脚本权限
chmod 755 /var/spool/gitosis/repositories/gitosis-admin.git/hooks/post-update
至此,服务端配置已经完成。
6.同步配置文件
gitosis本身就是一个git库,所以管理起来非常方便。下面在客户端同步gitosis管理库
git clone git@YOUR_SERVER:gitosis-admin.git
cd gitosis-admin
你将看到以下文件
-rw-r--r-- 1 garry garry 104 Nov 13 05:43 gitosis.conf
drwxr-xr-x 3 garry garry 102 Nov 13 05:43 keydir/
gitosis.conf是gitosis的配置文件,用于配置用户和权限
keydir/是所有组成员的公钥
我们可以在本地修改配置更改权限,然后push到服务端后,服务器端就立刻生效
7.创建新的repositories
打开gitosis.conf文件,你将看到
[group gitosis-admin]
writable = gitosis-admin
members = elton@macbook
这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。
在这个文件后面加入:
[group myteam]
members = elton@macbook
writable = free_monkey
这里你定义了一个叫myteam的组,授予elton@macbook这个用户写“free_monkey”这个repo的权限
git commit -a -m &Allow elton write access to free_monkey&
上面的操作就更新了服务端的权限。
下面就开始创建free_monkey的repo
mkdir free_monkey
cd free_monkey
创建 .gitignore 文件,用于忽略某些不需要进行代码管理的内容,如rails的应用可能如下:
config/database.yml
db/*.sqlite3
提交代码:
git remote add origin git@YOUR_SERVER_HOSTNAME:free_monkey.git
git commit -a -m &initial import&
git push origin master:refs/heads/master
接下来,可以增加成员的公钥到系统中了
cd gitosis-admin
cp ~/alice.pub keydir/
cp ~/bob.pub keydir/
git add keydir/alice.pub keydir/bob.pub
修改gitosis.conf
[group myteam]
- members = jdoe
+ members = jdoe alice bob
writable = free_monkey
提交修改:
git commit -a -m &Granted Alice and Bob commit rights to FreeMonkey&
其它成员就可以获取代码了
git clone git@YOUR_SERVER:free_monkey.git
更多课程...&&&
更多咨询...&&&
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
|&京ICP备号&京公海网安备号实战自建私有GIT服务器 + gitosis权限管理 - 简书
实战自建私有GIT服务器 + gitosis权限管理
[系统环境]
1. 操作系统
CentOS 6.5 X86_64 Final Updated
2. 版本控制
3. 权限管理
3. 日志时间
2016 - 07 - 25
4. 参考学习
为开源而生的版本控制软件
最近公司项目需求,用到 GIT 版本控制,需要自建 GIT 服务器,同时,要求每个git仓库要分权限管控;百度研习了几篇文章,乱糟糟的没头没尾,最后摸索总结出来,这里分享出来,免得运维的兄弟用得着到处找!
1. 安装GIT并配置全局参数yum install gitgit config --global user.name "RedGecko"git config --global user.email ""
2. 创建GIT帐号,用来运行GIT服务useradd git -m -s /usr/bin/git-shell
3. 初始化git仓库 test.gitgit init --bare /home/git/repositories/test.git
GIT吉祥物也能做的那么可爱
4. 安装gitosisyun install setuptoolscd ~/gitosisgit clone cd gitosispython setup.py install
5. 生成本机SSH密钥ssh-keygen -t rsa -C ""
6. 使用本机公钥初始化权限管理仓库sudo -H -u git gitosis-init & ~/gitosis/id_rsa_pub
7. 克隆远程gitosis-admin.git仓库到本地,并进行权限配置git clone git@xxx.xxx.xxx.xxx:gitosis-admin.git
gitosis-admin.git仓库目录如图,其中
8. 添加公钥到公钥管理文件夹
9. 修改gitosis.conf文件如下
gitosis.conf
10. 最后一步,更新远程管理仓库git add gitosis.confgit add ./keydir/*.pubgit commit -m "add test"git push
Red Gecko,Spread Knowleges that you can TrustGitosis配置手记 - 推酷
Gitosis配置手记
Git是目前世界上最先进的分布式版本控制系统。大名鼎鼎的GitHub就是一个免费托管开源代码的远程仓库。但既不想公开源代码,又舍不得给GitHub交保护费,那需要我们自己搭建一台Git服务器作为私有仓库使用。下面我们使用gitosis(
)这个服务器来配置这个私有仓库。简单地说,Gitosis 就是一套用来管理 authorized_keys文件和实现简单连接限制的脚本,它是Python开发的,所以要保证Python和Python setuptools提前安装好。
apt-get install python-setuptools
1. gitosis安装
(1). 首先要保证openssh的服务器和客户端已经被安装,并安装git
apt-get install openssh-server openssh-client
apt-get install git-core
(2). git配置准备
# 创建git仓库存储目录
sudo mkdir -p /app/git/repositories
# 设置git仓库权限
sudo chown -R git:git /app/git/repositories
sudo chmod -R 755 /app/git/repositories
sudo useradd -d /app/git -m git
sudo passwd git
创建gitosis管理员的个人公钥和私钥。首先su到git用户下面
默认生成2048位,可以提高到4096位来提高安全级别,通过下面的命令创建公钥和私钥
ssh-keygen -t rsa -b 4096
默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:
id_rsa.pub
known_hosts
初始化全局设置
git config --global user.name &git&
git config --global user.email &&
(3)、获取并安装gitosis
git clone /res0nat0r/gitosis.gitcd gitosis
sudo python setup.py install
2、管理gitosis
首先要用之前创建的管理员公钥初始化gitosis。
$ gitosis-init & ~/.ssh/id_rsa.pub
Reinitialized existing Git repository in /app/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /app/git/repositories/gitosis-admin.git/
chmod 755 /app/git/repositories/gitosis-admin.git/hooks/post-update
下面用用初始化 Gitosis 的公钥的拥有者身份 SSH 登录服务器,会显示下面的报错信息。
$ ssh -p 9999 git@localhost
PTY allocation request failed on channel 0
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
Connection to localhost closed.
Gitosis 认出了该用户的身份,但由于没有运行任何 Git 命令,所以它断开了连接。下面通过git clone命令来连接并克隆gitosis的控制仓库。首先创建一个目录来
mkdir myrepo
这里我把服务器默认的ssh端口修改了,所以要在客户端中创建~/.ssh/config,并添加Port 12345这一行。然后执行下面语句克隆
git clone git@localhost:gitosis-admin.git
Cloning into 'gitosis-admin'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.
Checking connectivity... done.
这样gitosis的控制目录gitosis-admin就被clone下了。里面结构如下:
cd gitosis-admin/
gitosis.conf
git@my-server.pub
gitosis.conf 文件是用来设置用户、仓库和权限的配置文件。
keydir 目录则是保存所有具有访问权限用户公钥的地方,允许访问gitosis的用户的公钥都保存在这里。
$ cat gitosis.conf
[group gitosis-admin]
members = git@my-server
writable = gitosis-admin
这表明了用户git(初始化 Gitosis 公钥的拥有者)是拥有唯一管理 gitosis-admin这个仓库的权限。下面我们可以新增一个项目。为此我们要建立一个名为dev的组(group),以及他们拥有写权限的项目。并允许’debugo’这个用户有权利读写’proj1’这个新项目:
[group dev]
members = debugo@my-server
writable = proj1
debugo虽然已经添加到了配置文件中,但它的公钥还没有被gitosis获知。所以我们要将debugo的公钥改名为debugo.pub,拷贝到keydir中。
cp /tmp/id_rsa.pub keydir/debugo@my-server.pub
git add keydir/debugo@my-server.pub
修改完之后,提交 gitosis-admin 里的改动,并push到服务器使其生效。
$ git commit -am 'add new group'
[master 36fc5a9] add new group
2 file changed, 3 insertions(+)
$ git push origin master
Counting objects: 5, done.
9bc77eb..36fc5a9
master -& master
3. git项目管理
在debugo用户目录下,首先先初始化用户信息。
$ git commit -am 'add new group'
[master 36fc5a9] add new group
2 file changed, 3 insertions(+)
$ git push origin master
Counting objects: 5, done.
9bc77eb..36fc5a9
master -& master
debugo用户已经有对proj1这个项目有读写权限了,但是proj1这个项目并没有任何内容。下面我们首先初始化一个本地项目。
$ mkdir proj1
$ cd proj1/
$ git init
Initialized empty Git repository in /home/debugo/proj1/.git/
# 添加几个新文件,并将所有文件列入索引中。
$ touch main.py hello.py
$ git add .
# 添加文件内容并进行一次提交
$ echo 'print &hello world&' & hello.py
$ git commit -a -m &origin&
[master (root-commit) b9ecf8e] origin
2 files changed, 1 insertion(+)
create mode 100644 hello.py
create mode 100644 main.py
# 检查该git仓库状态,保证它是最新的。
$ git status
On branch master
nothing to commit, working directory clean
# 下面push到远程的server上。
$ git remote add origin git@localhost:proj1.git
$ git push origin master
Initialized empty Git repository in /app/git/repositories/proj1.git/
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 261 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To git@localhost:proj1.git
* [new branch]
master -& master
OK!下面添加一个新的只读账户qa。在控制仓库中编辑一个新的组qa
$ cp /tmp/qa@my-server.pub keydir/
$ vim gitosis.conf
[group qa]
members = qa@my-server
readonly = proj1
$ git commit
-am 'add new group and key'
[master 6da3ce2] add new group and key
1 file changed, 4 insertions(+)
$ git push origin master
Counting objects: 5, done.
下面在qa用户中,可以checkout这个项目了。
#初始化客户端
$ echo &port 12345& & .ssh/config
$ git config --global user.name &qa&
$ git config --global user.email &&
下面成功从server上clone下项目,并检查是否能进行提交。
$ git clone git@localhost:proj1.git
Cloning into 'proj1'...
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4/4), done.
Checking connectivity... done.
$ git push origin master
Please make sure you have the correct access rights
and the repository exists.
/res0nat0r/gitosis
http://wiki./Git%E6%9C%8D%E5%8A%A1%E5%99%A8Gitosis%E5%AE%89%E8%A3%85%E8%AE%BE%E7%BD%AE
/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-Gitosis
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致gitosis和tortoisegit配置证书的问题
配置gitosis和tortoisegit,使用tortoisegit的puttygen工具生成个人证书连接gitosis管理的git。
gitosis管理git虽然原理也是通过ssh连接git服务器的,但是它管理的用户并不需要在服务器上存在实际的linux用户,客户端通过git用户和个人私钥访问git服务器。
这样的好处有2点:
1.只有拥有个人私钥的用户才能访问git。
2.git用户的密码也不需要透露给客户端用户。
客户端生成个人的公钥通过gitosis-admin上传到gitosis中后,gitosis会做自动一个公钥转发
可以查看/home/git/.ssh/authorized_keys文件,该文件中保存了每个用户的公钥信息。
本地通过tortoisegit连接git服务器的时候选择puttygen生成的个人私钥连接就可以了。
clone的时候经常会出现ERROR:gitosis.serve.main:Repository read access
denied这个错误,网上多是说因为密钥文件名一致的问题,但是我的环境是因为以下2个原因:
1.生成的公钥文件,上传到gitosis-admin之前应该做一个转换,因为这个公钥是在windows下做的,linux不能正确识别。
转换方法: 在linux下
&ssh-keygen -if windows的公钥文件 &
新的linux的公钥文件。
2.clone的路径的问题:之前clone的时候一般带上全路径,比如git clone
git@server:/home/git/repositories/projectname
&&现在不需要带全路径 git clone
git@server:projectname 即可。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 手机壳挂绳怎么绑教程 的文章

 

随机推荐