服务器上的 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 的相关文章

  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • git Push over sshfs 失败,并显示“关闭 sha1 文件时出错:错误的文件描述符”

    我们使用 sshfs 通过 SSH 安装文件系统 并将其用作 git 存储库协作的远程存储 Mac OSX 10 6 6 到 RHEL 3 服务器 SSHFS 版本 2 2 MacFUSE SSHFS 2 2 0 MacFUSE 库版本 F
  • `git ls-files -s` 输出中不同字段的含义是什么?

    在 Git 中 命令返回的典型结果行git ls files s好像 100755 be2c2e9b0966253096472d4b482c458bc892e493 0 gitignore 这些字段是什么意思 不用再犹豫了git ls fi
  • 哪个是更智能的 git 协议,ssh 或 git(通过 ssh)或 https 协议?

    哪个高效 SSH 或 Git 文件压缩 我对 Git 的理解是 git 协议很智能 因为通信两端都有一个协议代理来压缩文件传输 从而通过有效地使用网络带宽来实现更快的克隆 From 我发现了以下说法 For secure authentic
  • 格里特:! [远程拒绝] HEAD -> refs/publish/master (没有新的更改)

    我做了一些更改 提交了它们并将分支推送到 Gerrit git push gerrit 现在我的更改没有出现在 Gerrit 中 我认为这是因为我手动推送更改而不是使用git 审查 https github com openstack in
  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • git 认为文件已更改

    我在一台机器上对一个项目做了一些工作 然后推送到 github 在另一台机器上克隆并做了一些工作 然后推送 然后我回到第一台机器并做了一个pull 现在 第一台机器认为项目中最初的所有文件都已更改 我试过了 git checkout f a
  • `git Reset HEAD file` 是否也检查该文件?

    我错误地向 git 添加了一个目录 当我按照提示操作时here https stackoverflow com questions 348170 undo git add通过执行以下操作来撤消添加git reset HEAD
  • 如何克隆特定的 Git 标签

    From git clone 1 手册页 http git scm com docs git clone branch还可以在结果存储库中的该提交处获取标签并分离 HEAD 我试过 git clone branch
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • 带有 git Remote 的 Gem 文件在 Heroku 推送上失败

    我的 gemfile 中有以下行 gem client side validations git gt email protected cdn cgi l email protection Dakuan client side valida
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • Git 在哪里存储标签?

    Git 在哪里存储标签 我执行 git tag v0 1 0 v0 10 0 v0 11 0 但目录 git refs tags是空的 Git 将这些标签存储在哪里 谢谢 它们也可以存储在 git packed refs
  • 为什么 Git 无法将文件更改与修改后的父级/主控合并?

    我有一个文件 里面只有一行 我创建一个分支并向同一文件添加第二行 保存并提交到分支 我切换回主人 并向文件中添加不同的第二行 保存并提交给master 现在总共有 3 条独特的线路 如果我现在尝试将分支合并回主分支 则会遇到合并冲突 为什么
  • 将更改从一个分支复制到另一个分支

    我有一个分支名为BranchA from master 我有一些改变BranchA 我不会合并来自BranchA to master 现在我创建了另一个分支master named BranchB 我如何复制更改BranchA to Bra
  • git merge 冲突的不同场景

    我试图了解 git 合并后可能发生 git 冲突的情况以及如何避免它们 我创建了一个 git 存储库并向其中添加了一个文本文件 我已将 1 添加到文本文件中并将其提交给 master 我已经从 master 创建了一个新分支 分支 2 并将
  • 如何使用 git 比较不​​在存储库中的两个文件

    我想比较两个不在任何 git 存储库中的 css 文件 git中有这样的功能吗 git的 diff 比标准 Unix 更实用diff 我经常想这样做 并且由于这个问题在谷歌上排名很高 所以我希望这个答案出现 这个问题 如何使用git dif
  • Git:如何修改服务器的提交?

    我已经在 EC2 上的 git 服务器上推送了一些提交 而不是在 github 上 如何修改 git 服务器上的这些提交 操作就像 删除提交 例如变基 更改提交消息 是否可以 非常感谢 你几乎可以通过用力推动来完成所有事情 将您的本地树更改
  • 无法使用 Git 部署从多项目解决方案部署正确的网站到 Azure

    我有一个解决方案 它有一个 mvc 网站 WebApplication1 该网站依赖于解决方案中的另一个项目 WebAppCore 源代码托管在 Visual Studio Online 上的 git 中 我配置了持续集成 一切都构建得很好
  • GIT:提交时“致命:无法写入 new_index 文件”

    当我尝试将更改提交到本地存储库时 我收到以下消息 致命 无法写入 new index 文件 As this 线程说明 http luhman org blog 2010 04 05 git fatal unable write newind

随机推荐

  • 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 本篇文