Git Git用户ssh公钥管理

windows+CentOS+git服务器搭建记录 设计:在CentOS上创建一个管理共享文件夹的用户git。 创建需要登录的用户man1,man2. 密码分别是man12013,man22013. 实现访问的权限分配: 一些必须知道的东西:ssh的退出: exit 传输文件: man2@edemon-PC MINGW64 ~/man2 (master) $ scp info man2@192.168.137.99:/home/man2 阅读详情

4.7 服务器上的 Git - Gitosis

Gitosis

把所有用户的公钥保存在 authorized_keys 文件的做法,只能凑和一阵子,当用户数量达到几百人的规模时,管理起来就会十分痛苦。每次改删用户都必须登录服务器不去说,这种做法还缺少必要的权限管理 — 每个人都对所有项目拥有完整的读写权限。

幸好我们还可以选择应用广泛的 Gitosis 项目。简单地说,Gitosis 就是一套用来管理 authorized_keys文件和实现简单连接限制的脚本。有趣的是,用来添加用户和设定权限的并非通过网页程序,而只是管理一个特殊的 Git 仓库。你只需要在这个特殊仓库内做好相应的设定,然后推送到服务器上,Gitosis 就会随之改变运行策略,听起来就很酷,对吧?

Gitosis 的安装算不上傻瓜化,但也不算太难。用 Linux 服务器架设起来最简单 — 以下例子中,我们使用装有 Ubuntu 8.10 系统的服务器。

Gitosis 的工作依赖于某些 Python 工具,所以首先要安装 Python 的 setuptools 包,在 Ubuntu 上称为 python-setuptools:

$ apt-get install python-setuptools

接下来,从 Gitosis 项目主页克隆并安装:

$ git clone https://github.com/tv42/gitosis.git
$ cd gitosis
$ sudo python setup.py install

这会安装几个供 Gitosis 使用的工具。默认 Gitosis 会把 /home/git 作为存储所有 Git 仓库的根目录,这没什么不好,不过我们之前已经把项目仓库都放在 /opt/git 里面了,所以为方便起见,我们可以做一个符号连接,直接划转过去,而不必重新配置:

$ ln -s /opt/git /home/git/repositories

Gitosis 将会帮我们管理用户公钥,所以先把当前控制文件改名备份,以便稍后重新添加,准备好让 Gitosis 自动管理 authorized_keys 文件:

$ mv /home/git/.ssh/authorized_keys /home/git/.ssh/ak.bak

接下来,如果之前把 git 用户的登录 shell 改为 git-shell 命令的话,先恢复 'git' 用户的登录 shell。改过之后,大家仍然无法通过该帐号登录(译注:因为 authorized_keys 文件已经没有了。),不过不用担心,这会交给 Gitosis 来实现。所以现在先打开 /etc/passwd 文件,把这行:

git:x:1000:1000::/home/git:/usr/bin/git-shell

改回:

git:x:1000:1000::/home/git:/bin/sh

好了,现在可以初始化 Gitosis 了。你可以用自己的公钥执行 gitosis-init 命令,要是公钥不在服务器上,先临时复制一份:

$ sudo -H -u git gitosis-init < /tmp/id_dsa.pub
Initialized empty Git repository in /opt/git/gitosis-admin.git/
Reinitialized existing Git repository in /opt/git/gitosis-admin.git/

这样该公钥的拥有者就能修改用于配置 Gitosis 的那个特殊 Git 仓库了。接下来,需要手工对该仓库中的post-update 脚本加上可执行权限:

$ sudo chmod 755 /opt/git/gitosis-admin.git/hooks/post-update

基本上就算是好了。如果设定过程没出什么差错,现在可以试一下用初始化 Gitosis 的公钥的拥有者身份 SSH 登录服务器,应该会看到类似下面这样:

$ ssh git@gitserver
PTY allocation request failed on channel 0
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
  Connection to gitserver closed.

说明 Gitosis 认出了该用户的身份,但由于没有运行任何 Git 命令,所以它切断了连接。那么,现在运行一个实际的 Git 命令 — 克隆 Gitosis 的控制仓库:

# 在你本地计算机上
$ git clone git@gitserver:gitosis-admin.git

这会得到一个名为 gitosis-admin 的工作目录,主要由两部分组成:

$ cd gitosis-admin
$ find .
./gitosis.conf
./keydir
./keydir/scott.pub

gitosis.conf 文件是用来设置用户、仓库和权限的控制文件。keydir 目录则是保存所有具有访问权限用户公钥的地方— 每人一个。在 keydir 里的文件名(比如上面的 scott.pub)应该跟你的不一样 — Gitosis 会自动从使用 gitosis-init 脚本导入的公钥尾部的描述中获取该名字。

看一下 gitosis.conf 文件的内容,它应该只包含与刚刚克隆的 gitosis-admin 相关的信息:

$ cat gitosis.conf
[gitosis]

[group gitosis-admin]
members = scott
writable = gitosis-admin

它显示用户 scott — 初始化 Gitosis 公钥的拥有者 — 是唯一能管理 gitosis-admin 项目的人。

现在我们来添加一个新项目。为此我们要建立一个名为 mobile 的新段落,在其中罗列手机开发团队的开发者,以及他们拥有写权限的项目。由于 'scott' 是系统中的唯一用户,我们把他设为唯一用户,并允许他读写名为 iphone_project 的新项目:

[group mobile]
members = scott
writable = iphone_project

修改完之后,提交 gitosis-admin 里的改动,并推送到服务器使其生效:

$ git commit -am 'add iphone_project and mobile group'
[master 8962da8] add iphone_project and mobile group
 1 file changed, 4 insertions(+)
$ git push origin master
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 272 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitserver:gitosis-admin.git
   fb27aec..8962da8  master -> master

在新工程 iphone_project 里首次推送数据到服务器前,得先设定该服务器地址为远程仓库。但你不用事先到服务器上手工创建该项目的裸仓库— Gitosis 会在第一次遇到推送时自动创建:

$ git remote add origin git@gitserver:iphone_project.git
$ git push origin master
Initialized empty Git repository in /opt/git/iphone_project.git/
Counting objects: 3, done.
Writing objects: 100% (3/3), 230 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitserver:iphone_project.git
 * [new branch]      master -> master

请注意,这里不用指明完整路径(实际上,如果加上反而没用),只需要一个冒号加项目名字即可 — Gitosis 会自动帮你映射到实际位置。

要和朋友们在一个项目上协同工作,就得重新添加他们的公钥。不过这次不用在服务器上一个一个手工添加到 ~/.ssh/authorized_keys 文件末端,而只需管理 keydir 目录中的公钥文件。文件的命名将决定在 gitosis.conf 中对用户的标识。现在我们为 John,Josie 和 Jessica 添加公钥:

$ cp /tmp/id_rsa.john.pub keydir/john.pub
$ cp /tmp/id_rsa.josie.pub keydir/josie.pub
$ cp /tmp/id_rsa.jessica.pub keydir/jessica.pub

然后把他们都加进 'mobile' 团队,让他们对 iphone_project 具有读写权限:

[group mobile]
members = scott john josie jessica
writable = iphone_project

如果你提交并推送这个修改,四个用户将同时具有该项目的读写权限。

Gitosis 也具有简单的访问控制功能。如果想让 John 只有读权限,可以这样做:

[group mobile]
members = scott josie jessica
writable = iphone_project

[group mobile_ro]
members = john
readonly = iphone_project

现在 John 可以克隆和获取更新,但 Gitosis 不会允许他向项目推送任何内容。像这样的组可以随意创建,多少不限,每个都可以包含若干不同的用户和项目。甚至还可以指定某个组为成员之一(在组名前加上 @前缀),自动继承该组的成员:

[group mobile_committers]
members = scott josie jessica

[group mobile]
members   = @mobile_committers
writable  = iphone_project

[group mobile_2]
members   = @mobile_committers john
writable  = another_iphone_project

如果遇到意外问题,试试看把 loglevel=DEBUG 加到 [gitosis] 的段落(译注:把日志设置为调试级别,记录更详细的运行信息。)。如果一不小心搞错了配置,失去了推送权限,也可以手工修改服务器上的 /home/git/.gitosis.conf 文件 — Gitosis 实际是从该文件读取信息的。它在得到推送数据时,会把新的 gitosis.conf 存到该路径上。所以如果你手工编辑该文件的话,它会一直保持到下次向gitosis-admin 推送新版本的配置内容为止。

4.2 多智能体系统的严格隔离机制:防止上下文污染与隐私数据脱敏实战 本文探讨了多智能体系统中上下文信息共享带来的安全风险与解决方案。研究发现,随着Agent数量增加,上下文信息泄露概率呈指数级上升,可能导致跨Agent错误传播、隐私泄露等问题。文章提出分层隔离架构,将上下文划分为全局共享和本地私有两部分,并通过命名空间隔离、递归压缩和隐私过滤技术确保数据安全。技术实现上,建议为每个子Agent创建独立状态空间,采用原子化更新和读写锁控制避免状态竞争。隐私保护方面,结合正则匹配和命名实体识别技术进行敏感数据过滤,确保符合GDPR等法规要求。这些措施共同构建了可靠、安全且合规的 阅读详情

相关推荐

无法找到来自源 nvlddmkm 的事件 ID 14 的描述

具体错误是: 无法找到来自源 nvlddmkm 的事件 ID 14 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 出现这样错误的原因有很多了,有可能是硬件有可能是软件。由于我是刚配置的电脑,起初非常怀疑是自己组装的问题,折腾了好久,心态爆炸!!!先说我报这样错误的情况,以及解决办法,供后面人参考。 ...

SeventhBlue 6万+

服务器上的 Git - Gitosis

为什么80%的码农都做不了架构师?>>> ...

weixin_33965305的博客 208

AMESim柱塞泵建模全指南:从HCD库搭建到联合仿真

液压系统仿真中,轴向柱塞泵的建模始终是难点与热点。柱塞泵结构紧凑、功率密度高,在工程机械与航空航天领域应用广泛,然而其运动学与流体细节深度耦合,给仿真带来不小挑战。AMESim平台中的HCD库提供了一种从物理结构出发的建模思路,将柱塞泵分解为容积腔、节流口与机械约束等基础单元,从而真实刻画柱塞腔压力波动、配流特性和容积效率等关键行为,摆脱黑盒模型的局限。基于机理建模的仿真结果,可用于泵参数优化、故障特征分析以及控制策略验证。进一步结合AMESim与Simulink联合仿真,可以高效开发变量泵排量控制系统,研

weixin_29159441的博客 290

Git账号禁止shell登陆

vi /etc/passwd 将 => git:x:1001:1001:,,,:/home/git:/bin/bash 改为 => git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell /bin/bash => /usr/bin/git-shell

qq_24973007的博客 597

解决创建conda环境时Solving environment: failed 和 ResolvePackageNotFound 的错误

环境配置文件是在别的机器上导出的,文件里的软件包是按照导出文件的机器配置的,因此导出的时候,把这些包的详细信息也导了出来,即第二个等号后面跟着的信息,当我们按照这个文件创建环境时,conda就会根据我们机器的配置信息,按照配置文件里包的详细信息,去找这个包,那当然找不到,结果发现“查无此包”,因此也就会报上面的错误。上面找到了问题的所在之处,解决起来就很简单了,只需要在配置文件 environment.yml 中将包的详细信息删除,也就是第二个等号后面的内容。然而升级超级慢不说,也没有解决我的问题。...

番茄炒蛋三分糖 4万+

Setup&Hold互卡问题和Useful Skew的影响

setup和hold互卡问题分析

godping的博客 5096

宝塔配置SSH密钥登录,并用FTP和putty远程连接服务器

3、网上下载FTP连接上传工具(Filezilla ),运行该工具并开始新增站点。1、登录宝塔进入安全面板->SSH管理->开启SSH开关,照图操作。2、点击查看密钥,或者点击旁边的下载,把密钥文件保存在本地电脑。puttygen.exe(用于创建ssh密钥的软件)5、先用puttygen.exe软件创建ssh密钥。putty.exe(远程登录服务器的软件)

小虎哥-不可能变成可能 5359

LNA设计学习心得记录----MOS管的选取

LNA设计学习心得---MOS管的选取仿真

weixin_40359668的博客 6127

gitee自动同步到宝塔服务器-自动部署

gitee将代码自动同步到宝塔服务器中

缘来侍你的博客 2885

Windows 11最新WDK安装避坑指南:从Visual Studio配置到KMDF驱动开发

本文提供了在Windows 11系统上进行KMDF驱动开发的完整环境搭建与实战指南。针对最新WDK与Visual Studio的配置变化,详细解析了从独立安装WDK/SDK、创建首个KMDF驱动项目,到编译排错、部署调试的全流程,帮助开发者高效避坑,顺利开启Windows内核开发。

weixin_29302047的博客 528

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1067

部署:上传项目代码 & 配置数据库

上传代码,推荐使用Git Clone。或者用宝塔面板直接上传,但是不推荐。Linux上的npm包,有可能和Windows上不同。上传到服务器后,需要重新安装。生产环境,有自己的环境变量、秘钥和数据库配置。可以使用命令,创建生产环境的数据库、表和数据。使用MySQL客户端,也可以远程管理服务器上的数据库。

IT_iosers的博客 1525

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VSCode多个git账号配置SSH连接各自的仓库

打开.ssh目录的config配置文件,Windows在‪C:\Users\xxx.ssh\config,Linux在~/.ssh/config。进入github官网的仓库地址,然后设置SSH,把该仓库对应的公钥复制过去即可。1、Host就是对这个ssh配置取一个名字,可以随便取,但是最好是英文,因为后面的命令中会用到这个Host。生成的位置自行选择,我都配置在默认的.ssh目录下。3、HostName就是远程仓库的IP地址,可以上github.com,也可以是其他域名。输入位置后按两次回车即可。

qq_56182763的博客 2077

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

git ssh配置文件 服务器_搭建git服务器--ssh篇

安装git创建一个git用户,用来运行git服务$ sudo adduser git$ su git$ cd ~$ mkdir .ssh在git用户新建一个.ssh的目录,将开发者的SSH公钥添加到git这个用户的authorized_keys这个文件当中。创建证书登录设置本地git用户配置`$ git config --global user.name "username"``$ git con...

weixin_33140481的博客 178

Ubuntu 创建、管理用户、组和git库、项目

修改主机名sudo -e /etc/hostname sudo -e /etc/hosts 将127.0.1.1对应的原主机名改为新的创建组sudo groupadd 组名修改组sudo groupmod -n 新组名 原组名删除组sudo groupdel 组名创建用户sudo useradd -m会自动生成主目录 -k 内容将被拷贝到生成的主目录的样本目录 -d 主目录 -g 用户组 –gro

C/C++,Win/Linux使用与开发技巧 4918

纯用SSH管理GIT服务器

gitosis等管理git服务器有点小复杂,一般小规模开发没必要用,仅仅依靠Linux的SSH就可以管理了。步骤如下 1 添加用户,并准备公钥私钥 添加用户git,密码也是git adduser danny passwd danny adduser git passwd git root用产生公钥在/root/.ssh/id_rsa下面 ssh-k

纯月部落 3121

用git管理代码

前提:已经安装好git,在终端使用命令“git --version”,能输出版本为安装成功。

weixin_43541472的博客 430

Git生成ssh公钥(ssh key)以及在GitLab配置ssh公钥

前言 Git真的是个好东西,现在很多公司都会选择Git作为代码的版本控制工具,然后公司会搭建自己私有的GitLab来进行项目代码的管理。比如我在的这个公司,在clone代码的时候选择使用ssh协议来拉取代码。 下面我们来进行正文,如何使用Git生成ssh key以及如何在GitLab配置ssh公钥和后续的一些使用ssh协议进行提交和拉取git远程仓库的代码等。 一、使用Git生成ssh ke...

鄙人kunzhi96,感恩遇见! 1万+

git的安装和基本使用以及公钥的使用

1 git的介绍:git是一个开源的分布式版本管理系统,能够帮助我们记录每次文件的改动,还可以让同事协助编辑。分布式管理就是每台电脑都是一个完整的版本库。 2 安装git: 官网链接: 安装成功之后点击桌面右键会出现:Git GUI Here 和 Git Bash Here 代表安装成功。 3 基本使用:安装成功之后首先配置用户名和密码 git config --global user.name “你的用户名” git config --global user.email “你的邮箱” 配置成功后查看用户名

weixin_42461079的博客 411

Git使用之Permission Denied问题解决

今天碰到了Git的Permission Denied问题。 在安装好git之后,我们一般会配置用户名和邮箱 git config --global user.name "zengjinlong" #--global表明本机的所有git仓库均使用该配置   git config --global user.email "zengjinlong@xunlei.com"   但是当我们克隆一

MiniMicall的专栏 3万+

git多公钥ssh连接多仓库

git多公钥ssh连接多仓库本地新建创建多个ssh公钥进入的ssh公钥配置目录新建新的ssh公钥新建config编辑configgit地址配置把配置的ssh公钥复制到git对应后台生成私钥 本地新建创建多个ssh公钥 通过git bash打开命令行 进入的ssh公钥配置目录 cd ~/.ssh 新建新的ssh公钥 //新建demo@gmail.com的demo公钥 ssh-keygen -t rsa -C "demo@gmail.com" -f demo 注意:实际的邮件地址和-f后面的公钥名称demo

qq_39945080的博客 985

Git生成ssh key

1、在桌面点击鼠标右键,选择Git Bash Here 2、Git初始化,并生成ssh key 设置用户名,github上注册的用户名 git config --global user.name 'Jeff' 设置用户邮箱,注册时候的邮箱 git config --global user.email 'jiefu813@163.com' 生成ssh key ssh-keygen ...

weixin_45739720的博客 246

git ssh key的多账号管理

大家好,很开心跟大家分享,git ssh key的多账号管理。写这篇文章的起因是我公司使用的gitlab,个人使用的github,这两者的邮箱不同,ssh key 也不同,生成第二个git的key的时候会覆盖第一个的key,必然有一个用不了。百度一大波,终于搞定!其实在~/.ssh目录下新建一个config文件配置一下,就可以解决问题。详细步骤跟大家讲一下:第一步:生成ssh key ,githu...

asxw00的博客 431

git 多用户管理gitosis搭建

远程git服务器上 1,获取到安装包 [root@135 ~]#cd /home/git [root@135 git]# git clone https://github.com/res0nat0r/gitosis 2,,python进行安装 [root@135 git]#cd /home/git/gitosis [root@135 gitosis]# python gitosis/s...

杨文平的博客 743

Git多账号配置,同一电脑多个ssh-key的管理

为什么有这种需求? 在我们开发过程中,可能会遇到使用同一台机器,既要向公司git服务器提交代码,也要向gitlib或者gitee等 git仓库提交代码,2个仓库设置的用户名信息,不一样,此时需要用到多个ssh-key管理.主要包含以下几个步骤. 生成对应的私钥公钥 1. 生成github.com对应的私钥公钥 ssh-keygen -t rsa -C xxx@126.com **2. 同样的方式生...

weixin_30340353的博客 134

配置SSH公钥免密码推送Git

1.服务端配置文件 authorized_keys 使用 git 用户登录Linux,在其主目录 /home/git 内执行如下操作(无需管理员权限): mkdir .ssh chmod 700 .ssh cd .ssh touch authorized_keys chmod 600 authorized_keys ``` ♦特别注意 SSH系统要求 .ssh 目录权限是700(drwx------), .ssh/authorized_

weixin_42108533的博客 347
上一篇: Git web服务器
下一篇: Git 配置访问权限
lobal
博客等级 码龄16年 5粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值