当前位置:首页 > 开发工具 > 创建局域网Git服务器

创建局域网Git服务器

2022年09月17日 08:47:55开发工具4

本文提供的方法适用于小型团队在局域网内通过git协同编码,基本配置简便易行,还额外提供基于SSH免密码提交代码的扩展方案。基本原理可参见文末总结。

一. 基本步骤

第1步:安装 Linux,安装 Git

此处省略具体操作步骤。

第2步:创建 git 用户

在Linux系统内以管理员权限(root)执行如下命令创建Linux用户:

adduser git

此命令执行过程中会提示输入新用户的 登录密码,同时自动创建用户主目录/home/git,以及执行其他必要的工作。

该用户不一定非叫git,任意合法名称都行,例如 liigogit 等等,当然后续操作命令也要相应地修改,最终仓库地址也有所不同(仓库地址以此用户名开头)。

网上有方法禁止git用户登录SSH。我认为这一步是可选的。

第3步:创建 git 仓库

使用 git 用户登录Linux系统,在用户主目录 /home/git 内执行如下命令创建git仓库:

git init --bare myrepo.git

裸仓库(–bare)目录名称以后缀 .git 结尾是一种习惯性约定,并非必需。

该仓库本地目录是 /home/git/myrepo.git,或者 ~/myrepo.git,这个毫无疑问。

该仓库 远程目录 可以是以下任意一个:

  • git@192.168.0.2:/home/git/myrepo.git
  • git@192.168.0.2:~/myrepo.git
  • git@192.168.0.2:myrepo.git

咱们通常使用最后一个,因为它最简洁。

注意其中包含了用户名、IP地址、本地目录等信息;注意符号 @: 都是必不可少的。

第4步:客户端克隆 git 仓库

Git客户端可通过如下命令克隆仓库:

git clone git@192.168.0.2:myrepo.git

用户名git已经包含在仓库远程目录内,用户密码就是在第2步创建git用户时设定的那个密码。克隆仓库需要输入密码。

第5步:客户端推送 git 仓库

执行 git push 等命令时要求输入密码,就是第2步创建git用户时设定的那个密码。

至此,基本配置步骤已经完成,基础功能可用。如需免密码推送Git功能,请继续阅读本文。

二. 配置SSH公钥免密码推送Git

经过以上5个步骤,Git服务器基本功能已经可用,但是至少还有两个缺点:

  • 需要向团队所有成员公开git用户的密码,不太安全
  • 每次推送仓库时都要输入git用户的密码,操作繁琐

下面为Linux系统的 git 用户配置 authorized_keys 文件,配置成功之后就无需公开其登录密码,推送时也无需输入密码,一并克服了两个缺点。

服务端配置文件 authorized_keys

使用 git 用户登录Linux,在其主目录 /home/git 内执行如下操作(无需管理员权限):

mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys

LIIGO人云亦云注:SSH系统要求 .ssh 目录权限是700(drwx------),.ssh/authorized_keys 文件权限是600(-rw-------)。

然后编辑该文件 /home/git/.ssh/authorized_keys ,逐行输入团队各成员提供的公钥文件内容(下文介绍生成SSH公钥私钥的方法)。

客户端生成SSH公钥密钥

Linux用户

Linux登录用户在任意目录下执行命令 ssh-keygen 连续按三次回车键即自动生成如下两个文件:

  • ~/.ssh/id_rsa
  • ~/.ssh/id_rsa.pub

其中 id_rsa 就是刚创建的密钥文件(此文件名和路径不得随意变动),id_rsa.pub 是公钥文件。

团队各成员分别将自己的公钥文件 id_rsa.pub 或其内容发给git用户管理员,让他写入服务端 authorized_keys 文件。

TortoiseGit 用户

Tortoise Git 用户可通过 PuTTYgen.exe 创建公钥密钥。具体方法是点击Generate按钮,随意滑动鼠标直至创建完成,生成的公钥文本显示在窗口上方多行只读编辑框内,复制其内容发送给git用户管理员,让他写入服务端 authorized_keys 文件。最后还要点击 Save private key 按钮保存密钥文件(*.ppk,Putty密钥文件,区别于OpenSSH密钥文件(id_rsa),但利用PuTTYgen.exe,前者可以导出后者)。还有一点要特别注意,通过 Tortoise Git 图形界面克隆仓库时需勾选"Load Putty key",并选定前面生成的Putty密钥文件(*.ppk)。至于Pageant.exe,不用管他,Tortoise Git会自动启动它并自动加载Putty密钥文件。

LIIGO多说一句,对于Github上的仓库,要应用公钥密钥,通过TortoiseGit克隆仓库时必须使用SSH地址(形如git@github.com:liigo/rust.git),而非HTTPS地址(形如https://github.com/liigo/rust.git)。Github网站仓库首页同时提供这两类链接(“Clone with SSH” VS “Clone with HTTPS”)。

三. 总结

服务器是开启了SSH服务的Linux系统,在其中创建名称为 git 的Linux用户(同时也是SSH登录用户)专用于管理Git仓库,仓库位于服务器本机目录 /home/git/name.git 内,仓库SSH地址即客户端克隆地址是 git@ip:name.git,Git克隆命令行是 git clone git@ip:name.git

在未配置SSH公钥的情况下,需要向仓库使用者公开 git 用户的登录密码,克隆(clone)/拉取(pull)/推送(push)等操作都需要输入该密码。在服务端配置好文件 /home/git/.ssh/authorized_keys 并录入各使用者SSH公钥后,就无需公开该登录密码,所有Git操作都不用输入密码。

前面的基本操作步骤都很简单,可以提供基本的Git服务;配置SSH公钥的操作相对复杂,但客户使用体验更好。

此方法的缺点是,不能有针对性的分别设置团队各成员的权限,所有人都能完全操控Git仓库。

可能有朋友产生疑问,团队所有成员共用一个git用户提交代码,还能分清代码是谁写的吗?当然能。Git客户端推送时携带了代码作者的姓名和邮件地址,都完整的体现在 git log 里面,这个无需担心。Github网站后端也是如此操作的,并无不妥。

作者:Liigo
来源链接:https://blog.csdn.net/liigo/article/details/83790604

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/tool/42496.html

标签: Git
分享给朋友:

“创建局域网Git服务器” 的相关文章

GitHub的注册与使用

GitHub的注册与使用

目录 一、gihub账号注册与仓库创建 1.注册 2. 初始设置 3.验证账号 4.发现邮箱地址未验证,登录你注册时的邮箱,验证 5.新...

git远程仓库管理

远程仓库管理 修改仓库名 一般来讲,默认情况下,在执行clone或者其他操作时,仓库名都是 origin 如果说我们想给他改改名字,比如我不喜欢origin这个名字,想改为 jianguo 那么就要在仓库目录下执行命令: git remote re...

Git的安装教程(完成clone一个项目到本地)

Git的安装教程(完成clone一个项目到本地)

官网下载安装包地址:点击进入 https://git-scm.com/download/win 但是官网下载比较慢,我们这里选择国内阿里镜像点击进入 https://npm.taobao.org/mirro...

git中全局设置用户名

git中全局设置用户名

前提 安装git,右键打开git bashCLS 1、查看git配置信息 此命令可以查看所有的配置信息 git config --list 2、查看git用户名 git config us...

Git和GitHub

Git和GitHub

目录 Git概念 什么是版本控制? 为什么要使用版本控制? 版本控制系统的分类: ❀集中化的版本控制系统: ❀分布式的版本控制系统 git安装 git结构 代码托管中心_本地库和远程库的交互方式 初始化本地仓库 g...

GIt在pyCharm的使用教程

GIt在pyCharm的使用教程

GIt在pyCharm的使用教程 目录 GIt在pyCharm的使用教程 (一)Git的安装和配置 (二)在pycharm中配置git (三)创建仓库 (四)一些基础操作 (五)建立远程仓库提交代码   ...

git进行版本回退(文件恢复、恢复误提交、已提交)

文章目录 1.介绍 2.git的4个区 3.git文件的5种状态 4.回退命令...

GIT 获取指定历史版本代码(根据时间获取commit或者查看git log)

cd 到该项目的一个本地仓库下 log 查看提交记录,找到想要的提交记录,粘贴对应的希哈值 执行 git checkout 希哈值 这本地的这个仓库的代码就会变成你想要的那个版本的代码 查看某个时间点以后的log git log --since="Fri Aug 10...

IDEA底部工具栏调出Version Control(Git)

IDEA底部工具栏调出Version Control(Git)

IDEA底部工具栏调出Version Control(Git) 步骤:VCS–>Browse VCS Repository–>Show GIt Repository … 作者:sunday2018 来源链接:...

git-github 子模块仓库更新(git submodule)/git中submodule子模块的添加、使用和删除

文章目录 一、git submodule背景 1. git将submodule有关的信息在哪? 2. 子模块的添加...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。