搭建自己的Git服务器

搭建Git服务器   让我们先看下服务器端SSH访问的配置。在这个例子中,我们使用authorized_keys的方法认证用户。我们假设你的服务器是一个标准linux发行版,比如ubuntu。   首先,你需要创建一个git用户,并在用户目录下创建一个.ssh文件夹

接下来,你需要将开发者的SSH公钥添加到authorized_keys文件。我们这里假设你能获取到可信的公钥,并将它们保存到了临时文件中。公钥的内容应该大致像这个样子:

你需要将这个公钥放置在git用户.ssh文件夹中的authorized_keys文件的最后。

现在,你可以初始化一个空的仓库,运行 git init 命令,并附带--bare选项,这样就是单纯地初始化一个仓库,而不会变更当前目录。

然后,John、Josie或者Jessica就可以将项目的初版推送到这个仓库中了,步骤就是添加一个remote地址,并推送对应的分支。注意,如果你想增加一个项目,那么你就需要登陆到机器上来,再初始化一个新的仓库。我们将你使用到的服务器成为gitserver。如果你是公司内部使用,那么设置一个DNS,让域名gitserver指向这台机器。然后你就可以直接使用下列命令了。 (假设myproject是一个已经存在并且有些内容的文件夹)

这时,其他人就可以把这个仓库clone下来,做些修改再push回去了。

用上面的方法,你很快得到了一个可用的Git服务器,现在你可以跟很多人一起协作工作了。   注意,现在每个人都能够登陆到服务器上,并以git用户身份操作。如果你想限制这种可能,可以修改一下passwd文件。   你可以限制用户只能通过git-shell来进行操作。如果你这样设置git用户的登陆设置,那么git用户就无法登陆到机器上了。为了做到这种效果,使用git-shell替换bash和其他登陆shell。所以如果你的/etc/shells中没有git-shell,那么你需要先添加上去:

现在你可以为一个用户修改他的shell了

现在,git用户只能使用ssh推拉代码,而不能登陆到机器上了。 如果你尝试登陆,会得到这样的提示信息

现在git的网络命令还可以正常使用,但是登陆到远程服务器上已经不行了。就像输出中显示的,你也可以在git用户目录下创建一个文件夹来定制git-shell的一些行为。例如,你可以限制git服务器接受的命令范围,或者更改尝试登陆的错误提示。对于定制git-shell的行为,你可以通过命令git help shell 查看相关的帮助信息。  

除特别注明外,本站所有文章均为慕白博客原创,转载请注明出处来自https://geekmubai.com/programming/34.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ccylovehs

mysql启动报错The server quit without updating PID file

修改datadir=/var/lib/mysql     -- linux中mysql安装的默认路径

16.7K10
来自专栏编码小白

Ofbiz模块加载机制即创建独立模块(脱离热部署)

一般我们在ofbiz下的hot-deploy下直接创建模块组件就可以进行访问,但是我觉得文件过多话,就不方便管理,所以我们可以分离出来单独建立一个文件模块...

32950
来自专栏测试驿栈

JProfiler简明使用教程

 JProfile是一款性能瓶颈分析工具,监控粒度可以细化到某一个类包,堪称神器!我安装了一下9.11的版本,并简单说说使用方法。

1.9K30
来自专栏不想当开发的产品不是好测试

find命令小结

背景:由于机器上log日志比较多,所以想写个脚本定时清理日志 find  /apps/logs/log_receiver -mtime +7 -name "*[...

20950
来自专栏木子昭的博客

Python3简单实现多任务(多进程篇)第一种:进程池快速创建(适合创建大量进程,简单,推荐!)第二种实现方式(Process创建进程,需要手动管理)第三种实现方式(windows无法使用,只能在类U

python多进程实现多任务 优点:稳定性高;提升程序执行效率 第一种:进程池快速创建(适合创建大量进程,简单,推荐!) ? image.png fro...

432100
来自专栏从零开始学自动化测试

git使用教程1-本地代码上传到github

前言 不会使用github都不好意思说自己是码农,github作为一个开源的代码仓库管理平台,对代码的管理确实很方面。 问题来了:为什么越来越多的小伙伴喜欢开源...

37790
来自专栏云计算教程系列

如何在CentOS 7上使用FirewallD设置防火墙

Firewalld是一种防火墙管理解决方案,可用于许多Linux发行版,它们充当Linux内核提供的iptables包过滤系统的前端。在本教程中,我们将介绍如何...

31100
来自专栏测试驿栈

Linux内存机制以及手动释放swap和内存

我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念...

48430
来自专栏不想当开发的产品不是好测试

maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)

我们知道,maven的依赖关系是有传递性的。如:A-->B,B-->C。但有时候,项目A可能不是必需依赖C,因此需要在项目A中排除对A的依赖。在maven的依赖...

38560
来自专栏云计算教程系列

使用mysqldump备份MySQL或MariaDB

在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具。本文将简介MySQL如何使用mysqldump工具进...

15430

扫码关注云+社区

领取腾讯云代金券