凌峰创科服务平台

Windows Git服务器怎么搭建?

在Windows环境下搭建Git服务器是企业或个人团队进行版本控制管理的常见需求,尤其对于习惯Windows操作系统的用户而言,本地化部署能更好地整合现有工作流,以下是详细的搭建步骤、配置要点及注意事项,帮助用户快速完成Windows Git服务器的搭建与使用。

Windows Git服务器怎么搭建?-图1
(图片来源网络,侵删)

环境准备与依赖安装

搭建Windows Git服务器前,需确保系统满足基本条件,并安装必要的软件。

  1. 操作系统要求:推荐Windows 10/11专业版或Windows Server 2025及以上版本,确保支持SSH服务(若使用SSH协议)或IIS(若使用HTTP协议)。
  2. 安装Git:从Git官方官网下载最新版安装包,安装时选择默认配置即可,确保将Git添加到系统环境变量PATH中,安装后可通过命令行输入git --version验证是否成功。
  3. 安装SSH服务(可选):若通过SSH协议传输数据,需启用Windows的OpenSSH服务器,在“设置”-“应用”-“可选功能”中添加“OpenSSH服务器”,或通过PowerShell执行Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0安装。
  4. 创建Git专用用户:为提高安全性,建议创建一个独立的系统用户(如gituser)用于管理Git仓库,避免使用管理员账户,右键“此电脑”-“管理”-“本地用户和组”-“用户”,创建新用户并设置复杂密码。

创建Git仓库并配置权限

  1. 初始化仓库:在服务器上选择一个磁盘路径(如D:\GitRepositories)作为仓库存储目录,右键选择“Git Bash Here”打开终端,执行以下命令初始化空仓库:
    mkdir project.git && cd project.git
    git init --bare

    --bare参数表示创建“裸仓库”,仅包含版本历史记录,不支持直接工作,适合作为中央服务器使用。

  2. 设置仓库所有者:将仓库目录的所有权分配给gituser,避免权限问题,在仓库目录右键“属性”-“安全”-“编辑”,添加gituser用户并赋予“完全控制”权限。
  3. 配置多仓库管理:若需管理多个项目,重复上述步骤创建不同名称的裸仓库(如project1.gitproject2.git),统一存放在GitRepositories目录下,便于维护。

配置SSH或HTTP协议访问

根据团队需求选择协议,SSH协议更安全且支持免密登录,HTTP协议则便于通过Web浏览器访问。

(一)SSH协议配置

  1. 生成SSH密钥对:客户端用户需生成SSH公钥和私钥,在客户端Git Bash中执行:
    ssh-keygen -t rsa -C "your_email@example.com"

    按提示保存密钥(默认在~/.ssh/目录),公钥文件为id_rsa.pub

    Windows Git服务器怎么搭建?-图2
    (图片来源网络,侵删)
  2. 上传公钥到服务器:将客户端的id_rsa.pub内容追加到服务器gituserauthorized_keys文件中,在服务器Git Bash中执行:
    mkdir -p /home/gituser/.ssh && touch /home/gituser/.ssh/authorized_keys
    cat /path/to/client/id_rsa.pub >> /home/gituser/.ssh/authorized_keys

    注意:authorized_keys文件权限需设置为600,目录权限设置为700,可通过chmod命令调整。

  3. 测试连接:客户端执行ssh gituser@服务器IP,若无需密码即登录成功,说明SSH配置正确。

(二)HTTP协议配置(需IIS支持)

  1. 安装IIS和Git HTTP模块:通过“服务器管理器”添加“IIS”角色,并安装“URL Rewrite模块”和“Git HTTP请求处理模块”(需从Git官网下载)。
  2. 创建网站:在IIS中新建网站,指向GitRepositories目录,并配置“目录浏览”和“脚本执行”权限。
  3. 配置Web.config:在网站根目录创建web.config文件,添加以下内容以支持Git over HTTP:
    <configuration>
      <system.webServer>
        <handlers>
          <add name="GitHTTP" verb="*" path="*" modules="GitHttpModule" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
      </system.webServer>
    </configuration>
  4. 设置身份验证:在IIS中启用“基本身份验证”,并添加gituser用户的凭据,客户端克隆时需输入用户名和密码。

常见问题与优化建议

  1. 权限问题:确保仓库目录和.ssh目录权限正确,避免因权限不足导致客户端无法推送代码。
  2. 防火墙配置:在Windows防火墙中开放SSH默认端口22(若使用SSH协议)或HTTP端口80/HTTPS端口443(若使用HTTP协议),可通过netsh advfirewall firewall add rule name="SSH" dir=in action=allow protocol=TCP localport=22命令添加规则。
  3. 性能优化:对于大型仓库,建议启用Git的压缩传输功能(在服务器git config --global core.compression 9设置压缩级别),或使用Git LFS管理大文件。

相关问答FAQs

Q1: 客户端克隆时报错“Permission denied (publickey,password)”如何解决?
A: 此问题通常由SSH权限或密钥配置错误导致,首先检查服务器/home/gituser/.ssh/authorized_keys文件是否包含客户端公钥内容,并确保文件权限为600,目录权限为700;若使用HTTP协议,需确认IIS中基本身份验证是否启用,以及gituser用户凭据是否正确。

Q2: 如何限制Git服务器用户的仓库访问权限?
A: 可通过以下方式实现:

  • SSH级别:在authorized_keys文件中通过命令限制用户只能访问指定仓库,command="git-shell -c 'cd /path/to/project.git && git receive-pack '",强制用户登录后只能在该仓库执行操作。
  • 操作系统级别:为不同用户创建不同仓库目录,并通过NTFS权限控制用户对目录的访问范围,例如用户A仅能访问project1.git,用户B仅能访问project2.git
Windows Git服务器怎么搭建?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇