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

环境准备
在开始搭建前,需确保服务器满足以下基本要求:
- 操作系统:推荐使用Linux发行版,如Ubuntu 20.04或CentOS 7。
- 硬件资源:至少2GB内存、20GB存储空间(根据代码量调整)。
- 网络配置:服务器需有固定公网IP或内网IP,防火墙开放443端口(HTTPS默认端口)。
- 用户权限:建议使用非root用户操作,通过
sudo提权。
安装Git和依赖软件
- 更新系统包:
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian sudo yum update -y # CentOS/RHEL
- 安装Git:
sudo apt install git -y # Ubuntu/Debian sudo yum install git -y # CentOS/RHEL
- 安装Nginx(作为反向代理):
sudo apt install nginx -y sudo systemctl start nginx && sudo systemctl enable nginx
配置SSL证书
HTTPS需要有效的SSL证书,可通过Let's Encrypt免费获取:
- 安装Certbot:
sudo apt install certbot python3-certbot-nginx -y
- 获取证书:
sudo certbot --nginx -d yourdomain.com # 替换为实际域名
Certbot会自动配置Nginx的HTTPS证书,并设置自动续期。
创建Git用户和仓库
- 创建专用Git用户:
sudo adduser git sudo passwd git # 设置密码
- 初始化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):

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服务
- 安装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
- 创建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
用户权限与安全
- 禁用SSH密钥登录(仅保留HTTPS):
编辑
/etc/ssh/sshd_config,注释掉以下行:#PubkeyAuthentication yes重启SSH服务:
sudo systemctl restart sshd。 - 定期备份:
sudo tar -czvf git_backup.tar.gz /srv/git /var/lib/gitea
客户端使用
- 克隆仓库:
git clone https://yourdomain.com/git/user/project.git
- 推送代码:
cd project git add . git commit -m "Initial commit" git push origin master
相关问答FAQs
Q1: 如何限制用户只能访问特定仓库?
A1: 在Gitea中,进入仓库设置,添加协作者并分配“只读”或“读写”权限,若使用Gitosis,需编辑gitosis.conf文件,在[group]部分定义用户和仓库映射关系。

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