凌峰创科服务平台

git服务器搭建 https

搭建基于HTTPS的Git服务器是企业级开发环境中常见的需求,它通过SSL/TLS加密传输数据,确保代码传输的安全性和完整性,以下是详细的搭建步骤和配置方法,包括环境准备、服务安装、证书配置、用户管理及安全加固等内容。

git服务器搭建 https-图1
(图片来源网络,侵删)

环境准备

在开始搭建前,需确保服务器满足以下基本要求:

  1. 操作系统:推荐使用Linux发行版,如Ubuntu 20.04或CentOS 7。
  2. 硬件资源:至少2GB内存、20GB存储空间(根据代码量调整)。
  3. 网络配置:服务器需有固定公网IP或内网IP,防火墙开放443端口(HTTPS默认端口)。
  4. 用户权限:建议使用非root用户操作,通过sudo提权。

安装Git和依赖软件

  1. 更新系统包
    sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian
    sudo yum update -y                     # CentOS/RHEL
  2. 安装Git
    sudo apt install git -y  # Ubuntu/Debian
    sudo yum install git -y # CentOS/RHEL
  3. 安装Nginx(作为反向代理)
    sudo apt install nginx -y
    sudo systemctl start nginx && sudo systemctl enable nginx

配置SSL证书

HTTPS需要有效的SSL证书,可通过Let's Encrypt免费获取:

  1. 安装Certbot
    sudo apt install certbot python3-certbot-nginx -y
  2. 获取证书
    sudo certbot --nginx -d yourdomain.com  # 替换为实际域名

    Certbot会自动配置Nginx的HTTPS证书,并设置自动续期。

创建Git用户和仓库

  1. 创建专用Git用户
    sudo adduser git
    sudo passwd git  # 设置密码
  2. 初始化Git仓库
    sudo mkdir -p /srv/git
    sudo chown -R git:git /srv/git
    sudo su - git
    cd /srv/git
    git init --bare project.git  # 创建裸仓库
    exit

配置Nginx反向代理

编辑Nginx配置文件(/etc/nginx/sites-available/git):

git服务器搭建 https-图2
(图片来源网络,侵删)
server {
    listen 443 ssl;
    server_name yourdomain.com;
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    location / {
        proxy_pass http://localhost:8080;  # 假设Git服务运行在8080端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

启用配置并重启Nginx:

sudo ln -s /etc/nginx/sites-available/git /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx

配置Git服务

  1. 安装Gitosis或Gitea(推荐Gitea,功能更完善):
    wget -O gitea https://dl.gitea.io/gitea/1.18.0/gitea-linux-amd64
    chmod +x gitea
    sudo mv gitea /usr/local/bin/
    sudo useradd -r -s /bin/bash -c "Git Version Control" -d /var/lib/gitea git
    sudo mkdir -p /var/lib/gitea /etc/gitea
    sudo chown -R git:git /var/lib/gitea /etc/gitea
  2. 创建Gitea服务: 编辑/etc/systemd/system/gitea.service
    [Unit]
    Description=Gitea
    After=network.target
    [Service]
    User=git
    ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
    Restart=always
    [Install]
    WantedBy=multi-user.target

    启动服务:

    sudo systemctl daemon-reload
    sudo systemctl start gitea && sudo systemctl enable gitea

用户权限与安全

  1. 禁用SSH密钥登录(仅保留HTTPS): 编辑/etc/ssh/sshd_config,注释掉以下行:
    #PubkeyAuthentication yes

    重启SSH服务:sudo systemctl restart sshd

  2. 定期备份
    sudo tar -czvf git_backup.tar.gz /srv/git /var/lib/gitea

客户端使用

  1. 克隆仓库
    git clone https://yourdomain.com/git/user/project.git
  2. 推送代码
    cd project
    git add .
    git commit -m "Initial commit"
    git push origin master

相关问答FAQs

Q1: 如何限制用户只能访问特定仓库?
A1: 在Gitea中,进入仓库设置,添加协作者并分配“只读”或“读写”权限,若使用Gitosis,需编辑gitosis.conf文件,在[group]部分定义用户和仓库映射关系。

git服务器搭建 https-图3
(图片来源网络,侵删)

Q2: HTTPS连接时出现证书错误怎么办?
A2: 检查证书是否过期(运行certbot certificates),或手动续期(sudo certbot renew),若使用自签名证书,需在客户端系统中信任该证书。

分享:
扫描分享到社交APP
上一篇
下一篇