阿里云搭建私有Git及用户管理

本文介绍如何在CentOS 5.9系统上搭建Git服务,包括创建用户和项目仓库、克隆项目并提交修改、建立主机信任关系等步骤。此外还介绍了使用gitosis进行项目配置和管理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载须注明原文地址:http://blog.csdn.net/btyh17mxy/article/details/12451715

这里使用的操作系统是CentOS release 5.9 (Final),并且已经安装了git和一些必要的开发工具。

在服务器上创建用户和项目仓库(repository)

useradd git #创建git用户
passwd git #设置密码
su git #切换到git用户
cd ~/ #切换到home目录
git init --bare cube #创建一个叫cube的项目仓库

clone项目并提交修改(本地)

clone

git clone git@IP地址:cube ~/cube
需要说明的是这里会要求输入用户git的密码,我们稍后建立主机信任后就不需要输入密码了.
然后在cube下创建一个README.txt

git add *
git commit -m "create new file"
git push origin master

建立主机信任关系

在本地执行
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
拷贝文件公钥内容

在服务器执行
mkdir ~/.ssh
chmod 755 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
echo 拷贝的公钥 >> ~/.ssh/authorized_keys

要注意文件权限的问题.

使用gitosis来配置和管理git服务端

当服务端项目和用户数量增多时, 管理将变得复杂起来,好在有gitosis.

初始化gitosis

在本地执行
scp id_rsa.pub IP地址:/tmp/id_rsa.pub #上传管理员密钥到服务器

在服务端执行
gitosis-init < /tmp/id_rsa.pub #初始化gitosis

在本地配置gitosis-admin
git clone git@IP地址:gitosis-admin.git

clone到本地后会有一个keydir文件夹和一个gitosis.conf文件,前者保存着git用户的公钥后者是配置文件,其配置文件通常的结构如下:
[gitosis]
gitweb = yes #开启gitweb支持

[repo foobar]
description = Git repository for foobar
owner = user

[group devs] #一个用户组
members = user1 user2

[group admins]
members = user1

[group gitosis-admin]
writable = gitosis-admin
members = @admins

[group foobar]
writable = foobar
members = @devs

[group myteam]
writable = free_monkey
members = jdoe

[group deployer]
writable = free_monkey
readonly = monkey_deployer
关于配置文件的详细介绍在 https://wiki.archlinux.org/index.php/gitosis#Repositories_and_permissions

使用gitosis创建项目

在gitosis.conf中添加如下内容:
[group cubelinux-dev]
writable = projectname
members = username #要与客户端使用的用户名一致

提交项目到服务器

然后在本地创建项目目录
git init projectname #要与上面的名字一样
git add . 
git commit -a -m "init progect"
提交到服务器
git remote add origin git@IP地址:progectname.git 
git push origin master

开启gitweb支持

gitweb是一个简单的可视化网页界面,可以使用任何兼容CGI的网页服务来运行,这里选用的Apache

下载编译安装

git clone git://git.kernel.org/pub/scm/git/git.git
cd git/
make GITWEB_PROJECTROOT="/home/git/repositories"\
    GITWEB_JS="gitweb/static/gitweb.js" \
    GITWEB_CSS="gitweb/static/gitweb.css" \
    GITWEB_LOGO="gitweb/static/git-logo.png" \
    GITWEB_FAVICON="gitweb/static/git-favicon.png" \
    bindir=/usr/local/bin \
    gitweb
make gitwebdir=/var/www/cgi-bin/gitweb install-gitweb

需要注意的是GITWEB_PROJECTROOT应该修改成你的仓库的路径,并且其权限(包括子目录)应是705。
然后修改/etc/gitweb.conf,改成下面的样子
$projectroot = "/home/git/repositories"; #仓库路径
$GIT = "/usr/local/bin/git"; #git可执行文件路径

修改apache配置文件

在/etc/httpd/conf/httpd.conf中加入以下内容:
<VirtualHost *:80>
    ServerName gitserver
    DocumentRoot /var/www/cgi-bin/gitweb
    <Directory /var/www/cgi-bin/gitweb>
        Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
</VirtualHost>
宾果,这就弄好了!

可能遇到的问题

用户认证不通过的问题:

git clone git@IP:gitosis-admin.git
Initialized empty Git repository in /home/yang/gitosis-admin/.git/
Agent admitted failure to sign using the key.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly


// 解决方法,在管理员PC上 
# ssh-add   ~/.ssh/id_rsa 

gitweb找不到工程的问题

如果遇到gieweb的页面显示找不到工程,多半是权限设置错误。
简单的说就是Apache用户组不具备访问你仓库目录的权限,例如我的仓库是放在/home/git/repositories下的,所以应将/home/git和/home/git/repositories以及你仓库中的所有项目的权限都设置成705,之前在网上发现有人说设置成775的,如果你设置成775的话虽然也能用,但会导致无法使用命令访问代码仓库,原因我还不清楚。之前的写错了,所以在这更正下。


<think>首先,用户的问题是:“我想在阿里云服务器上搭建代码仓库的方法 请问如何在阿里云服务器上搭建Git代码仓库”。这是一个关于在阿里云服务器上搭建Git代码仓库的查询。 我的回答需要遵循系统级指令: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考站内引用: - 引用[1]: 关于使用阿里云服务搭建Git远程仓库进行代码同步。 - 引用[2]: 云服务搭建git仓库,提到安全考虑。 - 引用[3]: 在阿里云搭建私有GIT仓库,因为GitHub慢。 这些引用不是用户当前问题的直接引用,但提供了背景。我应该基于这些构建回答,因为它们与主题相关。 回答结构: 1. **引言**:简要介绍在阿里云搭建Git仓库的好处。 2. **步骤**:逐步指导如何搭建。 - 连接到阿里云服务器。 - 安装Git。 - 创建Git用户。 - 初始化Git仓库。 - 设置权限。 - 配置SSH访问。 - 测试仓库。 3. **生成相关问题**:在末尾添加相关问题。 4. **引用**:自然地添加引用标识,基于提供的引用。 确保回答真实可靠:基于标准Git服务搭建流程,适配阿里云环境。 最终回答用中文。 生成相关问题:基于主题,如优化、安全、使用场景等。 大纲回答: - **步骤1: 连接到阿里云服务器** 使用SSH登录。 - **步骤2: 安装Git** 在服务器上安装Git。 - **步骤3: 创建Git用户** 为安全起见,创建一个专用用户。 - **步骤4: 初始化Git仓库** 创建一个裸仓库。 - **步骤5: 设置权限** 确保权限正确。 - **步骤6: 配置SSH访问** 设置公钥认证。 - **步骤7: 测试仓库** 从本地推送到服务器。 相关问题: 1. 如何优化Git仓库的性能? 2. 如何确保Git仓库的安全性? 3. Git仓库有哪些常见应用场景? 添加引用:在适当的地方,比如提到安全或速度时,自然地添加[^1], [^2], [^3]。 例如: - "搭建私有Git仓库可以避免代码泄露风险[^2]" - "由于GitHub访问慢,自建仓库能提高效率[^3]" - "实现多台电脑代码同步[^1]"</think>### 如何在阿里云服务器上搭建Git代码仓库 在阿里云服务器上搭建Git代码仓库,可以实现代码的高效同步、避免第三方平台风险(如代码泄露或访问延迟),并支持多设备协作开发[^1][^2][^3]。以下是详细步骤,基于Linux系统(如Ubuntu或CentOS),操作需通过SSH连接到服务器。整个过程约10-15分钟完成。 #### **步骤1: 连接到阿里云服务器** - 打开本地终端,使用SSH登录服务器(替换`your_username`为你的用户名,`your_server_ip`为阿里云服务器公网IP): ```bash ssh your_username@your_server_ip ``` - 输入密码后进入服务器环境。确保服务器已开通SSH端口(默认22)。 #### **步骤2: 安装Git** - 更新软件包列表并安装Git: ```bash sudo apt update # Ubuntu/Debian系统 sudo apt install git -y ``` - CentOS系统用:`sudo yum install git -y` - 验证安装:`git --version`,应输出类似`git version 2.34.1`。 #### **步骤3: 创建专用Git用户(推荐)** - 为安全起见,创建一个新用户`git`,避免使用root账户[^2]: ```bash sudo adduser git # 按提示设置密码 sudo passwd git # 可修改密码 ``` - 切换到`git`用户:`su - git` #### **步骤4: 初始化Git仓库** - 在`git`用户目录下创建裸仓库(裸仓库不包含工作区,仅存储代码历史): ```bash cd /home/git git init --bare myrepo.git # myrepo.git为仓库名,可自定义 ``` - 设置仓库权限: ```bash sudo chown -R git:git /home/git/myrepo.git ``` #### **步骤5: 配置SSH公钥认证** - **在服务器上**: - 切换到`git`用户:`su - git` - 创建`.ssh`目录并授权: ```bash mkdir ~/.ssh chmod 700 ~/.ssh touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` - **在本地电脑**: - 生成SSH密钥对(如果已有可跳过): ```bash ssh-keygen -t rsa -b 4096 # 默认保存在~/.ssh/id_rsa.pub ``` - 复制公钥内容:`cat ~/.ssh/id_rsa.pub` - **将公钥添加到服务器**: - 将复制的公钥粘贴到服务器`~/.ssh/authorized_keys`文件中(用`nano`或`vim`编辑)。 #### **步骤6: 测试仓库访问** - **从本地电脑克隆仓库**: ```bash git clone git@your_server_ip:/home/git/myrepo.git ``` - 首次连接需确认主机密钥,输入`yes`。 - **推送代码**: ```bash cd myrepo touch README.md git add . git commit -m "Initial commit" git push origin main ``` - 成功推送后,代码即存储在阿里云服务器上,支持多设备同步[^1]。 #### **步骤7: 优化与安全(可选)** - **禁用Shell登录**:增强安全,限制`git`用户仅用于Git操作: ```bash sudo usermod -s /usr/bin/git-shell git # 修改git用户的登录shell ``` - **防火墙设置**:在阿里云控制台,确保仅允许可信IP访问SSH端口。 - **定期备份**:使用`cron`任务自动备份仓库到阿里云OSS或其他存储。 ### 常见问题解决 - **权限错误**:检查`/home/git/myrepo.git`的所有者是否为`git`用户。 - **SSH连接失败**:确认阿里云安全组已放行SSH端口,且公钥正确粘贴。 - **仓库大小限制**:大项目可启用Git LFS(Large File Storage)。 搭建私有Git仓库能有效提升代码安全性和访问速度[^2][^3],适合团队协作或个人多设备开发。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值