搭建Git服务器

简介: 本文参考于廖雪峰老师的博客Git 教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。 新用户家(home)目录下.shh/authorized_keys存放管理连接到 Git 远程仓

备注:

本文参考于廖雪峰老师的博客Git教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。

知识点

  • apt-get install git安装git,创建用户adduser username
  • 新用户家(home)目录下.shh/authorized_keys存放管理连接到Git远程仓库的用户的私钥。
  • git init --bare reponame.git创建一个空的远程仓库,并将此远程仓库所在目录及子目录的拥有者设置为新用户,chown -R username:usernameGroup sample.git/
  • 修改/etc/passwd文件,禁用用户shell终端登陆。

搭建Git服务器

Git远程仓库本质上和本地仓库没有任何区别,只是它能提供永久在线服务

如下演示在Ubuntu上搭建Git服务器

  • 安装git:
$ sudo apt-get install git
  • 创建一个git用户,用来运行git服务
$ sudo adduser git
使用 passwd git为git用户修改密码。
  • 创建证书登陆

创建证书登陆,和在使用githubgitee时,将公钥上传到远程服务器上一样,Git服务器需要搜集需要登陆的用户端的公钥(用户创建的id_rsa.pub),

搜集所有需要登陆的用户的公钥,即用户的id_rsa.pub文件。把公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

默认新建的git用户家(home)目录,没有 .ssh隐藏目录。可手动创建目录和文件。

新建一个用户,其家目录下面默认生成的文件由/etc/skel目录里面的内容决定(可自行验证)。

同时Ubuntu下新建用户,家(home)目录下的桌面等目录需要使用新用户登陆ubuntu桌面后,才会会生成桌面、图片、文档、下载、音乐等目录。

  • 初始化Git仓库:

选定一个目录作为Git仓库,假设为/srv/sample.git,在/src目录下输入命令

$ sudo git init --bare sample.git
[sudo] git 的密码:
初始化空的 Git 仓库于 /srv/sample.git/

Git会创建一个空的仓库,且没有工作区,只用于共享,所以不应让用户直接登陆到服务器修改工作区。

服务器Git仓库通常.git结尾。

  • 将目录的所有者改为git
$ sudo chown -R git:git sample.git/
  • 禁用git用户shell登陆

处于安全考虑,新建的git用户不允许登陆shell。通过编辑/etc/passwd文件设置。

打开passwd文件找到如下行:

git:x:1001:1002:,,,:/home/git:/bin/bash

将其修改为

git:x:1001:1002:,,,:/home/git:/usr/bin/git-shell

此时使用git登陆,将会不允许

$ su git
密码:
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
su命令用来切换登陆用户

sudo用来获取root管理员权限,执行命令

su [username] 切换到指定用户,不改变环境变量

su - [username] 切换并改变环境变量为指定用户(常用)

git用户可以正常通过ssh使用git,但无法登陆shell,因为为git用户指定的git-shell每次一登录就自动退出。

  • 克隆远程仓库。

现在就可通过git clone将远程仓库/srv/sample.git/克隆下来。

可以设定一个服务器名访问克隆远程仓库。如将 gitsever设置到本地hosts中,ip为Git服务器的地址。
$ git clone git@gitsever:/srv/sample.git
Cloning into 'sample'...
The authenticity of host 'gitsever (192.168.104.237)' can't be established.
ECDSA key fingerprint is SHA256:SYG7vL********************y597FA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitsever,192.168.104.237' (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.

会提示克隆了一个空的git仓库,查看仓库内容。

$ cd sample/

/sample (master)$ ls -al
total 4
drwxr-xr-x 1 win7hostsver 197121 0 May  4 14:29 .
drwxr-xr-x 1 win7hostsver 197121 0 May  4 14:29 ..
drwxr-xr-x 1 win7hostsver 197121 0 May  4 14:29 .git

之后可以使用这个远程库进行git的操作、同步等。

公钥的管理

如上,一个简单的git服务器已经搭建完成。然后可以添加其他的仓库、其他用户的公钥等进行管理。

  • 公钥路径位置:/home/git/.ssh/authorized_keys

但是对于大型或者多人使用和管理的git服务器,可以使用Gitosis管理公钥。

git服务器仓库的权限管理

git本身是为了托管linux代码而开发的,所以注重开源精神,不支持权限控制。

但Git提供了相关的钩子(hook),可以借此编写一系列脚本来控制对仓库的提交等操作,从而实现控制权限。Gitolite就是一个提供管理权限的工具,有需要可深入了解

相关文章
|
2月前
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
70 18
[Git] 深入理解 Git 的客户端与服务器角色
|
2月前
|
网络安全 Apache 开发工具
图解Git——服务器上的Git《Pro Git》
Git 远程仓库及通信协议简介:远程仓库为团队协作提供平台,支持共享代码。常见形式为裸仓库,仅保存 Git 元数据。Git 支持多种协议,包括本地协议(适合局域网)、HTTP/HTTPS(推荐智能 HTTP,安全易用)、SSH(企业内部协作首选)和 Git 协议(高效只读访问)。选择协议需根据协作需求、安全性和配置难度权衡。此外,搭建 Git 服务器涉及创建裸仓库、上传至服务器、初始化共享仓库等步骤。生成 SSH 公钥、配置服务器及使用 GitWeb 或 GitLab 等工具可进一步增强功能。第三方托管服务如 GitHub 提供便捷的托管选项,适合快速启动和开源项目。总结而言,自行运行服务器提
59 11
|
5月前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
69 5
|
6月前
|
Linux 开发工具 数据安全/隐私保护
搭建 Git 私人服务器完整指南
本文详细介绍了如何从零开始搭建一个私人的 `Git` 服务器。首先,文章解释了 `Git` 的概念及其优势,并阐述了搭建私人 `Git` 服务器的重要性,包括数据隐私、定制化需求及成本效益。接着,文章分步骤指导读者完成服务器的准备工作,包括操作系统、硬件和网络要求。随后,详细介绍了在不同操作系统上安装 `Git` 的方法,并演示了如何创建 `git` 用户、部署仓库以及设置免密登录。此外,还提供了客户端连接远程仓库的具体步骤,包括 Linux 和 Windows 的操作方式。最后,文章探讨了迁移仓库的方法以及搭建 `Git` 服务器的一些进阶选项。
1203 0
搭建 Git 私人服务器完整指南
|
7月前
|
开发工具 git iOS开发
服务器配置Huggingface并git clone模型和文件
该博客提供了在服务器上配置Huggingface、安装必要的工具(如git-lfs和huggingface_hub库)、登录Huggingface以及使用git clone命令克隆模型和文件的详细步骤。
664 1
|
5天前
|
弹性计算 运维 监控
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
62 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
|
5天前
|
弹性计算 Linux 数据安全/隐私保护
阿里云幻兽帕鲁联机服务器搭建全攻略,速来抄作业!2025新版教程
阿里云提供2025年最新幻兽帕鲁服务器申请购买及一键开服教程。4核16G配置支持8人,70元/月;8核32G配置支持20人,160元/月。选择配置、地域、操作系统后,点击【一键购买及部署】,约3分钟完成创建。本地安装STEAM客户端并登录,进入游戏选择多人模式,输入服务器IP和端口(8211),即可开始游戏。详细教程及更多问题解答请参考阿里云幻兽帕鲁游戏专区。
49 20
|
4天前
|
存储 人工智能 运维
阿里云操作系统控制台——解决服务器磁盘I/O故障
阿里云操作系统控制台——解决服务器磁盘I/O故障
32 12
|
8天前
|
弹性计算 数据可视化 Linux
阿里云操作系统控制台——ECS操作与性能优化
本文详细介绍如何操作阿里云服务器ECS,从开通到组件安装及内存诊断。首先,通过选择操作系统(如Alibaba Cloud Linux 3)并开通服务,创建RAM用户并授予权限。接着,安装所需组件,支持节点或集群安装。最后,利用内存全景诊断功能,输入实例ID或Pod名称发起诊断并解析结果。这一流程帮助用户高效搭建计算环境,提升技术能力,确保业务稳定运行,并提出优化建议以改善用户体验。
59 8
|
3天前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。