服务器上的 Git - Gitosis

2023-05-16

公司有这个东西,之前一直没研究过这个是啥,原来就是git的一个权限管理工具,可以用来搭建git服务器,当然gitlab更好用
具体请参考:服务器上的 Git - Gitosis

本篇文章参考:

服务器上的 Git - Gitosis
gitosis使用笔记

一、获取安装包

root@qqq:~# mkdir /data
root@qqq:~# cd /data
root@qqq:/data# git clone https://github.com/tv42/gitosis.git
Cloning into 'gitosis'...
remote: Enumerating objects: 661, done.
remote: Total 661 (delta 0), reused 0 (delta 0), pack-reused 661
Receiving objects: 100% (661/661), 118.12 KiB | 157.00 KiB/s, done.
Resolving deltas: 100% (430/430), done.

二、安装

2.1安装前要安装依赖包
root@qqq:~# apt-get install python-setuptools -y
2.2开始安装
root@qqq:/data/gitosis# python setup.py install

三、把代码仓库放到/data/uscwifi目录下面,这一步创建一个账户,家目录为/data/uscwifi,根据个人喜好,我这里创建uscwifi用户:

#创建家目录
root@qqq:~# mkdir -p /data/uscwifi
# 创建用户
root@qqq:/data# useradd -r \
> -s /bin/bash \
> -c "git version control" \
> -d /data/uscwifi \
> uscwifi
#看一下
root@qqq:/data# getent passwd uscwifi 
uscwifi:x:999:999:git version control:/data/uscwifi:/bin/sh
#修改所有者
root@qqq:/data# chown uscwifi.uscwifi /data/uscwifi/ -R

四、切换到uscwifi用户,上传我的公钥,初始化Gitosis

#切换用户
root@qqq:~# su - uscwifi
uscwifi@qqq:~$ pwd
/data/uscwifi
#上传我的公钥
david@DESKTOP-IKJKR9H:~$ scp .ssh/id_rsa.pub root@10.0.3.109:/data/uscwifi
#开始初始化(我这里需要修改这个公钥的权限root@qqq:/data# chown uscwifi /data/uscwifi/id_rsa.pub)
#使用git用户初始化Gitosis
#如果使用sudo -H -u uscwifi gitosis-init < id_rsa.pub 在超级管理员下运行
uscwifi@qqq:~$ gitosis-init < id_rsa.pub

#然后当前目录下就生成了两个目录
uscwifi@qqq:~$ ls 
gitosis  id_rsa.pub  repositories

五、客户端操作Gitosis

5.1、试着连一下,没有问题,说明gitosis认出了该用户身份,但由于没有运行任何git命令所以切断连接
root@qqq:~# ssh uscwifi@10.0.3.109
The authenticity of host '10.0.3.109 (10.0.3.109)' can't be established.
ECDSA key fingerprint is SHA256:xVKdJNr4Qbfoe/Sasm20qXZsNMmBSOFvo4lMUOJSkyk.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.3.109' (ECDSA) to the list of known hosts.
PTY allocation request failed on channel 0
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
Connection to 10.0.3.109 closed.

5.2、克隆Gitosis的控制仓库到本地

root@qqq:~# mkdir test
root@qqq:~# cd test/
root@qqq:~/test# git clone uscwifi@10.0.3.109:gitosis-admin.git
Cloning into 'gitosis-admin'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (5/5), 696 bytes | 696.00 KiB/s, done.
remote: Total 5 (delta 0), reused 0 (delta 0)
root@qqq:~/test# ls
gitosis-admin
#进入该目录,有个conf文件还有个keydir目录
root@qqq:~/test/gitosis-admin# ls
gitosis.conf  keydir
root@qqq:~/test/gitosis-admin# ls keydir/
david.pub

六、将运维同事tom加入控制权限组

gitosis.coonf是用来设置用户、仓库和权限的控制文件
keydir目录保存每个人的公钥

6.1、他的key放到keydir
root@qqq:~/test/gitosis-admin/keydir# cp -a david.pub tom.pub
root@qqq:~/test/gitosis-admin/keydir# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjJx12/KDW0sQgk62gK4A8f7aYclsODDXzR+rUoP37y/f1CwI3gXXU+1cLOVN3FdHhsyMwSzraWXDJ+8+OyjEo1T9fbuCAebJB3Vn7sDdi0uix3r4gHYxeqOMS/vZSmBzyIlwDShM/4ss/6fdzUcC4zd150v6pvGegdGh8aYY0T1mPocqFHyfb0bLtoK6BaaNy6iSijJoLwdSRoLyBZ4dDzKhI/Est/YAnnllQsM2oYS+ekTkll6/WONFI2wfwtyj4sHUPk9wHTdPB+b/w6onGlE2haYQTLsYx7Z4GMH0HaRXmxmRGdtVd8oDMMEJFRX8DceL97QnSnGaie9ZwFYB9 tom@client" > tom.pub 
6.2、修改conf文件

gitosis-admin该团队拥有成员david和tom,对gitosis-admin仓库具有读写权限

在这里插入图片描述

6.3、推到仓库
root@qqq:~/test/gitosis-admin# git config --global user.email "david@example.com"
root@qqq:~/test/gitosis-admin# git config --global user.name "David"
root@qqq:~/test/gitosis-admin# git add .
root@qqq:~/test/gitosis-admin# git commit -m "add tom to gitosis-admin"
[master b7c376f] add tom to gitosis-admin
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 keydir/tom.pub
root@qqq:~/test/gitosis-admin# git push
Counting objects: 5, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 760 bytes | 760.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To 10.0.3.109:gitosis-admin.git
   6d26da5..b7c376f  master -> master

6.4、tom拉取仓库测试,没有问题

[tom@client ~]$ git clone uscwifi@10.0.3.109:gitosis-admin.git
正克隆到 'gitosis-admin'...
The authenticity of host '10.0.3.109 (10.0.3.109)' can't be established.
ECDSA key fingerprint is SHA256:xVKdJNr4Qbfoe/Sasm20qXZsNMmBSOFvo4lMUOJSkyk.
ECDSA key fingerprint is MD5:14:ab:81:92:1f:ff:5e:ca:59:5e:88:d9:fb:06:20:16.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.3.109' (ECDSA) to the list of known hosts.
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 10 (delta 0), reused 0 (delta 0)
接收对象中: 100% (10/10), done.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器上的 Git - Gitosis 的相关文章

  • 为什么“git描述-dirty”在描述干净结帐时添加“-dirty”后缀?

    我刚刚发现 dirty选项git describe看起来它应该做一些非常有用的事情 即在输出中附加一个后缀git describe当工作树脏时 但是在我的一些存储库上似乎并非如此 git status On branch 8 30 noth
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • 尝试配置 GIT 时 Eclipse 没有响应

    Windows 10 专业版 64 位SSD金士顿 i5 4690Eclipse 版本 全部工作空间 空问题 每次我尝试配置 TEAM gt GIT gt 配置或尝试导入 创建本地 远程 git 时 Eclipse 都会冻结 直到我强制用任
  • 如何停用 Xcode git 功能? (删除 git 集成)

    我的 Xcode 项目位于 git 上 但我不喜欢 Xcode git 集成 有时 我有来自 Xcode 的错误 https stackoverflow com questions 7388560 error fatal not a git
  • 如何获取 git 存储库中所有文件的计数?

    如何获取 git 存储库中当前所有文件的计数 您可以使用以下命令获取 git 存储库中所有跟踪文件的计数 git ls files wc l 命令分解 The git ls files命令本身打印出存储库中所有跟踪文件的列表 每行一个 Th
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • VS Code 在交互式变基期间不会等待我 [重复]

    这个问题在这里已经有答案了 如果我使用交互式变基git rebase i使用为 Git 配置的默认编辑器 一切都运行良好 如果我在我的全局中添加以下内容 gitconfig core editor C Program Files x86 M
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 如何使用 git 找到一个分支中但不在另一个分支中的所有提交?

    我有两个分行master and live Master是发展 分支并包含尚未准备好进入的提交live 如果在master需要进入的分支live树枝然后他们被樱桃采摘master to live 有时会做出承诺live分支然后是 樱桃摘入m
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd
  • 我如何才能看到 Github 风格的东西,例如 git -repo 的打孔卡和时间线?

    我正在寻找一个可以可视化 git repo 工作的软件 我喜欢 Github 的一些功能和 Bitbucket 的一些功能 所以我不想使用它们 因为它们并不完美 我正在寻找创建类似视觉特征的方法 下面你可以找到一些部分 但仍然缺少很多谜题
  • 设置 git 别名,但调用它会给出“找不到命令”

    我想在 git 中设置一个别名来计算存储库中的总行数 因此我进入 Git Bash 并输入以下内容 git config global alias linecount ls files z xargs 0 wc l 我输入命令后 没有出现错
  • 将 GIT 存储库中的文件标记为暂时忽略

    我们正在从 Perforce 迁移到 GIT 当然 我希望存储库中有一些文件 但个人开发人员不应该定期签入它们 诸如 eclipse 项目文件之类的东西 每个开发人员可能会获得初始的 project 文件 但随后会根据自己的环境稍微调整它
  • 为什么我们应该在 git commit 命令中使用 -m ?

    git commit m my commit 我们使用此命令将提交添加到我的 Github 存储库 这个 m 是什么意思 Do a git commit help m是为了留言 这将出现在您的提交历史记录中 例子 git commit m
  • 使用 svn 元数据克隆 git-svn 存储库

    我已经克隆了我的主存储库git svn clone svn url trunk stdlayout 现在我想使用 svn 元数据克隆存储库 这样我就能够git svn rebase它到主服务器 注意 我不想在两个之间推送提交git svn克
  • git checkout 后,Git 丢失了本地提交文件

    我从另一个分支切换 这样我就可以进行推送 在进行结账时 文件在我的编辑器中打开 这可能导致权限被拒绝错误 git 丢失了我的所有文件吗 我不知道如何让他们回来 这就是我所做的 丢失的文件有js Messages目录templates Mes
  • 在 Jenkins 项目中加载私有存储库子模块

    我目前正试图让詹金斯 克隆项目及其子模块 使用部署密钥配置为 Github 私有存储库验证 Jenkins CI https stackoverflow com questions 5212304 authenticate jenkins
  • Github 操作错误:bash:第 3 行:npm:找不到命令

    我正在尝试通过 ssh 将 Nodejs 应用程序从 github 部署到远程 ubuntu 服务器 这是我的 main yml name Node Github CI on push branches master jobs deploy
  • 如何调试 git Remote set-url 不起作用

    我无法更改 git 远程 urlgit to https 如下图所示 git remote set url不工作 git remote v 来源 git github com userName repoName git 获取 原点 git
  • 如何在解决冲突的过程中提交长 Git 合并

    我正在进行一次大型合并 其中包含 300 多个冲突文件 我想使用 mergetool 来解决这些问题 但我不可能一次性完成这一切 我如何提交合并 然后返回并继续相同的合并 通常 如果索引中存在冲突 git 似乎不允许您提交 我假设 不能一次

随机推荐

  • PX4飞控学习(四)

    系统启动 启动文件 xff1a nuttx arch arm stm32 stm32 start c stm32 clockconfig span class hljs regexp span 时钟 stm32 fpuconfig span
  • VSCode 搭建 C++ 开发环境

    文章目录 前言一 获取参考资料二 下载安装 VSCode三 安装编译器四 添加环境变量五 使用VSCode 开发 C 43 43 程序总结 前言 鲁迅曾说过 xff0c 不以敲代码为目的的学编程都是耍流氓 xff01 我最近在撸 C 43
  • Ubuntu安装VMware

    Ubuntu安装VMware xff08 1 xff09 需求 由于windows 的日渐卡顿还有变态的更新 xff0c 我的需求就是稳定单调优化好所以我通过Ubuntu 安装VMware xff0c 然后开启虚拟机继续学习 xff08 2
  • python实现TCP通信

    本例是在Ubuntu虚拟机中本机互传实现的TCP通信 一 TCP服务器端 xff08 server端 xff09 1 创建套接字 xff0c 绑定套接字到本地IP与端口 s 61 socket socket socket AF INET s
  • agrc argv解释

    以前经常看见过 xff1a int main int argc char argv 这样形式的main但是一直没有这样用直到研究点云时发现有个例子是 xff1a gt exe pcd 这样的doc下的命令才想起有这样的两个参数 xff0c
  • 个人面试细节、技巧总结(没有面试题哦!)

    面试除了自身技能过硬外 xff0c 良好的沟通 xff0c 平和的心态 xff0c 细节的拿捏也都是额外的加分项 最后 xff0c 以些许运气加以点缀 xff0c offer 便八九不离十了 参加工作两年有余 xff0c 只大专文凭 xff
  • 【记录】ORB-SLAM3编译以及在realsense D435i运行

    环境 xff1a 最开始用的是源码是ORB SLAM3 的1 0版本 xff0c 但是编译的时候出错太多了 xff0c 超出了能力范围 xff0c 更换了0 4 beta版本 xff0c 但是这个版本在运行的时候会直接segmentatio
  • ArtiPub

    ArtiPub ArtiPub Article Publisher的简称 xff0c 意为 34 文章发布者 34 是一款开源的一文多发平台 xff0c 可以帮助文章作者将编写好的文章自动发布到掘金 SegmentFault CSDN 知乎
  • mac安装配置zsh

    mac安装配置zsh 比mac自带的shell好用太多 一 安装homebrew 参考 xff1a https brew sh index zh cn bin bash c span class token string 34 span c
  • 手把手教你给win10 2004版本的ubuntu1804子系统安装docker

    ubuntu1804子系统安装docker ce 分两种情况 xff1a 1 win10版本小于2004版本2 win10版本大于2004版本 一 说明 win10版本小于2004的话 xff0c 可以使用WSL1 0 xff0c WSL1
  • windows安装scoop

    参考 xff1a https scoop sh 参考 xff1a https github com lukesampson scoop wiki Quick Start 懂不懂 xff0c 先装上 xff0c 这样你就完成了该工具学习的第一
  • PX4飞控学习(五)

    PX4的应用 程序入口为 程序名 main int argc char argv 这里实现应用参数 主循环函数在 task main int argc char argv thread main int argc char argv 等函数
  • 转载kubernetes 1.9 与 CentOS 7.3 内核兼容问题

    20201022转载kubernetes 1 9 与 CentOS 7 3 内核兼容问题 原文 xff1a http www linuxfly org kubernetes 19 conflict with centos7 生产环境发现不定
  • 【转载】为什么说Prometheus是足以取代Zabbix的监控神器?

    原文 xff1a https www infoq cn article 275NDkYNZRpcTIL2R8Ms 原文 xff1a https mp weixin qq com s biz 61 MzI4NTA1MDEwNg 61 61 a
  • 【转载】K8S 问题排查:cgroup 内存泄露问题

    转载 K8S 问题排查 xff1a cgroup 内存泄露问题 原文 xff1a http www xuyasong com p 61 2049 前言 这篇文章的全称应该叫 xff1a 在某些内核版本上 xff0c cgroup 的 kme
  • 【可用】prometheus邮件报警配置

    参考 xff1a https github com prometheus alertmanager issues 384 参考 xff1a https github com easzlab kubeasz issues 448 使用QQ邮箱
  • 【案例】微服务-中台-业务关系图(来自processon)

    微服务 中台 业务关系图 知识云微服务架构 微服务开发平台规划架构图 微服务架构图 物联网微服务无业务架构 阿里中台技术在大型企业数字化转型的架构图 阿里中台战略笔记
  • prometheus监控域名证书到期时间

    参考 xff1a https mp weixin qq com s gXffcNzixAiTKSBZcf2sBA 最终效果图 xff1a 下面全部使用docker部署 xff1a 一 部署prometheus 这是一个默认的promethe
  • windows更新后无法上网问题(wifi和有线都不行)

    我真是个既倒霉又幸运的孩子 曾经 xff0c 有人在旁边抱怨 xff1a 该死的微软 xff0c 更新了一堆bug xff01 我没有理他 xff0c 因为它没有影响到我 xff0c 我很开心 曾经 xff0c 又有人在旁边抱怨 xff1a
  • 服务器上的 Git - Gitosis

    公司有这个东西 xff0c 之前一直没研究过这个是啥 xff0c 原来就是git的一个权限管理工具 xff0c 可以用来搭建git服务器 xff0c 当然gitlab更好用 具体请参考 xff1a 服务器上的 Git Gitosis 本篇文