凌峰创科服务平台

如何配置Windows Git服务器?

在Windows系统上配置Git服务器,可以通过多种方式实现,其中使用Git for Windows结合SSH协议或Git自带的HTTP/HTTPS服务是最常见的方法,以下是详细的配置步骤,包括环境准备、仓库创建、用户权限管理及安全设置等内容。

环境准备

  1. 安装Git for Windows
    下载并安装Git for Windows(官网地址:https://git-scm.com/download/win),安装过程中默认选项即可,确保勾选“Open Git Bash here”选项,方便后续命令行操作。

  2. 安装SSH服务(可选)
    若通过SSH协议访问,需启用OpenSSH服务,在Windows搜索“管理工具”→“服务”,找到“OpenSSH Authentication Agent”和“OpenSSH SSH Server”,确保两者状态为“正在运行”,若未安装,可通过“设置”→“应用”→“可选功能”→“添加功能”搜索并安装OpenSSH服务器。

  3. 创建Git用户
    为安全起见,建议创建专用用户运行Git服务,以管理员身份打开“计算机管理”→“本地用户和组”→“用户”,右键创建新用户(如gituser),并设置复杂密码,后续操作将以该用户身份执行。

创建Git仓库

  1. 初始化仓库
    gituser身份登录,或在命令行中使用runas /user:gituser cmd切换用户,选择一个目录作为仓库根目录(如D:\git-repos),执行以下命令初始化裸仓库(裸仓库不包含工作目录,仅用于代码托管):

    mkdir D:\git-repos\myproject.git
    cd D:\git-repos\myproject.git
    git init --bare
  2. 设置仓库所有者
    确保仓库目录所有者为gituser,避免权限问题:

    icacls D:\git-repos\myproject.git /grant gituser:F

配置SSH访问

  1. 生成SSH密钥(客户端操作)
    在客户端电脑(如开发者的Windows/Linux/macOS)打开终端,执行以下命令生成SSH密钥对:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    公钥默认保存在~/.ssh/id_rsa.pub,需将其内容复制到服务器的gituser~/.ssh/authorized_keys文件中。

  2. 配置服务器SSH授权
    在服务器上,以gituser身份创建.ssh目录并设置权限:

    mkdir C:\Users\gituser\.ssh
    echo "客户端公钥内容" >> C:\Users\gituser\.ssh\authorized_keys
    icacls C:\Users\gituser\.ssh /inheritance:r
    icacls C:\Users\gituser\.ssh /grant gituser:F

    注意:authorized_keys文件权限需设置为600,目录权限为700

  3. 测试SSH连接
    客户端执行:

    ssh gituser@服务器IP

    若无需密码登录成功,则SSH配置正确。

配置HTTP/HTTPS访问(可选)

若需通过Web访问,可使用Git自带的HTTP服务或集成IIS。

  1. 启用Git HTTP服务
    在仓库目录下创建git-daemon-export-ok文件:

    echo "export" > D:\git-repos\myproject.git\git-daemon-export-ok

    然后通过git daemon --export-all --base-path=D:\git-repos启动服务(需以管理员身份运行)。

  2. 集成IIS(推荐)

    • 安装IIS及URL Rewrite模块、CGI功能(通过“启用或关闭Windows功能”)。
    • 下载Git for Windows的git-http-backend.exe(位于Git\mingw64\bin),并将其路径添加到系统环境变量PATH
    • 在IIS中创建网站,配置物理路径为仓库根目录D:\git-repos
    • 添加URL重写规则,将请求转发至git-http-backend,具体规则可参考Git官方文档。

用户权限管理

  1. 通过SSH密钥控制权限
    仅将授权用户的公钥添加到authorized_keys,即可控制访问权限。

  2. 使用Gitosis或Gogs(进阶)
    若需更精细的权限管理,可部署Gogs(轻量级Git服务),其基于Go语言开发,支持Windows,提供Web界面管理用户和仓库,下载地址:https://gogs.io/docs/installation/install_on_windows。

安全设置

  1. 防火墙配置
    在Windows防火墙中允许SSH(默认端口22)和HTTP(端口80)/HTTPS(端口443)流量入站。

  2. 定期备份
    定期备份仓库目录D:\git-repos,可通过任务计划程序设置定时备份脚本。

  3. 禁用Shell访问
    为增强安全性,可在gituser/etc/passwd文件中将其Shell设置为git-shell(需Git for Windows支持),限制其只能执行Git命令。

常见问题与解决

问题现象 可能原因 解决方案
SSH连接被拒绝 密钥未正确配置或权限错误 检查authorized_keys文件权限及内容,确保.ssh目录权限为700
Git推送时提示“permission denied” 仓库所有者或权限不正确 使用icacls命令重新分配gituser对仓库目录的完全控制权限

相关问答FAQs

Q1: 如何在Windows上实现多用户同时访问Git服务器?
A1: 可通过以下步骤实现:

  1. 为每个用户创建独立的Windows账户(如user1user2),并加入gituser所在的用户组。
  2. 在服务器上生成各用户的SSH密钥,并将公钥分别添加到对应Windows账户的~/.ssh/authorized_keys文件中。
  3. 若使用Gogs,可直接通过Web界面添加用户并分配仓库权限,无需手动管理密钥。

Q2: 配置Git服务器后,如何确保数据传输的安全性?
A2: 可采取以下措施:

  1. 启用HTTPS:若通过HTTP访问,配置SSL证书(可使用Let’s Encrypt免费证书),强制加密传输。
  2. 限制IP访问:在防火墙或IIS中设置IP白名单,仅允许特定IP地址访问Git服务。
  3. 定期更新:保持Git for Windows、OpenSSH及相关组件的最新版本,及时修复安全漏洞。
  4. 审计日志:启用IIS或SSH的日志记录,定期审查访问日志,发现异常及时处理。
分享:
扫描分享到社交APP
上一篇
下一篇