搭建git for windows服务器(100%可以成功)

本文详细介绍了在Windows环境下搭建Git服务器的过程,并提供了关键步骤和常见问题解决方案,帮助开发者实现跨平台的版本控制。

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

      既然git在linux下面非常好用,为什么还要搭建git windows的服务器,因为不是所有的用户都需要在linux下面做开发,对吧,还有很多用户选择使用windows做开发。

      看到很多网友尝试部分不成功,所以对内容部分做了修改。

      日期:2015.10.14


      日期:2016.10.15修订

建议安装时都以管理员权限运行,否则可能有些目录创建什么需要权限,尤其是win7用户。


      科普一下:

      1、TortoiseGit是什么?没错,是个乌龟,就像它的壳一样,仅仅是个壳,所以离不开真正的git(git for windows版本名字又叫msysgit,没壳的乌龟还能叫乌龟?国外的货就是喜欢把开源项目命名为一些稀奇古怪的东西)。

      2、COPSSH是个什么东西? 就是一个windows平台的SSH服务器。

      3、Git-1.8.3-preview20130601.exe是个什么东西?这就是真正的git。

      4、使用TortoiseGit里面自带的PuTTY Key Gen生成的密钥对(公钥和私钥)为什么还要转换? COPSSH根本不用生成任何key的,只需要添加客户端提供上来的公钥即可。


     

参考这位仁兄的方法:http://blog.youkuaiyun.com/aaron_luchen/article/details/10498181 ,基本上能成功90%,但是最终还是会出现这样的错误,

比如:

Disconnected:No supported authentication methods available (server sent:publickey,keyboard-interactive)

比如使用Git Clone 怎么都Clone不下来代码等等。


比如:

fatal: protocol error: bad line length character: Micr

这样的协议错误,应该选择Linux shell and sftp,不应该选择windows shell。


开始进入正题:

所以需要注意下面的步骤。

1、添加好了用户以后,在COPSSH Pannel里面添加好为windows创建的用户,比如名字叫git,看好了Password authentication可是没有勾选的。


2、重点在这一步,修改配置文件,找到COPSSH安装的目录下面的etc目录,比如C:\SSH\etc,用记事本打开ssh_config和sshd_config这两个文件,两个文件都要修改。

修改如下内容:

        找到PasswordAuthentication,如果前面有#号,删掉,如果后面是yes,改成no

        PasswordAuthentication no

        找到PubkeyAuthentication,如果前面有#号,删掉,如果后面是no,改成yes

        PubkeyAuthentication yes

        找到Port 22,删除掉前面的#号

        Port 22


3、看下图,一目了然,别告诉我你不知道这个软件从哪里打开的,既然安装了乌龟TortoiseGit,当然是要去它的开始菜单里面找了。保存好私钥用于后面同步时Load用。


4、打开COPSSH安装目录下的home\git\.ssh目录,打开authorized_keys文件,将刚才上一步生成的公钥,粘贴进来,点保存,退出。例如下图:


5、重新启动COPSSH,方法两种,

      一种是点绿色按钮,变红后,再次点即可变绿色,绿色代表已经正常运行,提示Service is running,如果配置的有问题,有时候会出现,你点一下那个红色按钮,程序没任何提示就直接关闭了,在这里不得不骂一下这个软件的开发人员,真是傻逼一个。就算是程序出错了,来个Messagebox提示一下用户会死吗?而是直接给退掉了,真奇葩。

      另一种是进入windows服务里面,双击Openssh SSHD,点击启动服务,如果出现以下这种情况,解决方法是::




5.5、下图说明COPSSH运行正常,如果不是,说明服务没有正常启动,按照上面的步骤,检查一下系统的相关服务是否正常启动了:



6、同步代码,假如服务器上已经创建了版本库,如何使用乌龟软件TortoiseGit同步下来,假如同步地址是这样(局域网内):ssh://git@192.168.10.8:22/SSH/home/git/lib_database

同步成功:


后记

有人说要改下面的地方,真不知是怎么想的,改了反而会导致Git Clone时的Load Putty Key变成灰色,导致在客户端上无法选择privatekey.ppk私钥文件。


经网友评论多次反映,出现"git did not exit cleanly (exit code 128)"这样的错误提示,一般是由于本机和服务器之间的权限问题,尝试一下开始->运行->\\192.168.10.8 回车,看能不能出现提示用户名和密码的窗口,不能,则说明之间有权限问题,先解决这个问题,后面应该就可以通了。



<think>我们正在处理一个关于在Windows服务器搭建Git服务器的请求。用户之前可能参考了Linux服务器搭建方法,但我们需要调整为Windows环境。根据引用[1]和[2],我们了解到在Linux上搭建的关键步骤包括:上传公钥、在服务器上创建仓库、以及使用git命令推送更改。在Windows上,我们可以使用类似的思想,但具体工具和步骤会有所不同。常见的WindowsGit服务器解决方案包括:1.使用GitforWindows自带的SSH服务器(但需要配置SSH服务)2.使用BonoboGitServer(一个基于IIS的Git服务器)3.使用GitBlit(一个Java-based的Git服务器)考虑到用户可能希望一个相对简单的方法,我们选择使用GitforWindows搭建,因为它是官方工具,且配置后可以支持SSH协议。步骤概述:1.在Windows服务器上安装GitforWindows。2.配置SSH服务(确保OpenSSH服务器已安装并运行)。3.创建一个用于Git服务的专用用户(例如git)。4.将客户端的公钥添加到服务器git用户的authorized_keys文件中。5.在服务器上创建裸仓库(barerepository)。6.在客户端克隆和推送。由于用户是Windows环境,我们还需要注意Windows的路径和权限问题。详细步骤:步骤1:安装GitforWindows下载地址:https://git-scm.com/download/win安装时,注意选择“UseOpenSSH”作为SSH可执行文件(在安装选项中)。步骤2:配置OpenSSH服务(如果尚未安装)在WindowsServer2019及更高版本中,OpenSSH服务器是可选功能。可以通过“添加角色和功能”安装。安装后,启动服务并设置为自动启动:Start-ServicesshdSet-Service-Namesshd-StartupType'Automatic'注意:确保防火墙允许22端口(SSH默认端口)。步骤3:创建git用户在Windows上,我们可以创建一个普通用户账户(例如git),并设置密码(可选,因为我们将使用公钥认证)。打开“计算机管理”->“本地用户和组”->“用户”,新建用户git。步骤4:配置公钥认证使用git用户登录(或者以管理员身份运行PowerShell):cdC:\Users\git\.ssh如果.ssh目录不存在,则创建。将客户端的公钥(id_rsa.pub)内容追加到authorized_keys文件中(如果文件不存在则创建)。注意:确保.ssh目录和authorized_keys文件的权限只对git用户可读写(删除其他所有权限)。步骤5:创建裸仓库选择一个位置存放仓库,例如:C:\GitRepositories在该目录下,创建裸仓库:gitinit--baremyrepo.git注意:设置该目录的权限,确保git用户有读写权限。步骤6:客户端测试在客户端,使用SSH协议克隆:gitclonegit@server_ip:GitRepositories\myrepo.git注意:Windows路径使用反斜杠,但在SSH中,我们使用正斜杠也是可以的,因为GitforWindows会处理路径转换。但是,由于GitRepositories在C盘根目录,我们可以这样写:gitclonegit@server_ip:/c/GitRepositories/myrepo.git或者使用绝对路径(注意:在Windows的OpenSSH中,路径是相对于用户主目录的,所以我们需要指定完整路径):gitclonegit@server_ip:C:/GitRepositories/myrepo.git另一种更简单的方式是使用BonoboGitServer,它提供Web界面,安装简单:1.下载BonoboGitServer:https://bonobogitserver.com/2.安装IIS(如果尚未安装)。3.将下载的Bonobo解压到IIS的网站目录(如C:\inetpub\wwwroot\Bonobo)。4.在IIS中创建网站,指向该目录,并设置端口(如8000)。5.通过浏览器访问http://server_ip:8000,然后按照界面提示创建用户和仓库。考虑到用户可能希望简单,我们提供两种方案,但先以GitforWindows的SSH方案为主。由于用户之前的问题是关于Windows服务器,我们优先使用第一种方法(SSH方案)进行详细说明。注意:在Windows上配置SSH服务可能会遇到权限问题,需要仔细设置。我们按照步骤详细说明:步骤1:安装GitforWindows运行下载的安装程序,在组件选择步骤,确保勾选:[x]WindowsExplorerintegration(可选,但方便)[x]GitLFS(可选)[x]Associate.git*configurationfileswiththedefaulttexteditor[x]UseaTrueTypefontinallconsolewindows在“选择SSH可执行文件”步骤,选择“UseOpenSSH”(默认可能已选)。其他步骤按默认即可。步骤2:安装OpenSSH服务器(如果未安装)对于WindowsServer2019或Windows10(1809以上):打开“设置”->“应用”->“应用和功能”->“可选功能”->“添加功能”找到“OpenSSH服务器”,安装。或者使用PowerShell(管理员):Add-WindowsCapability-Online-NameOpenSSH.Server~~~~0.0.1.0然后启动服务:Start-ServicesshdSet-Service-Namesshd-StartupTypeAutomatic步骤3:创建git用户以管理员身份打开PowerShell:netusergit<password>/add这里<password>替换为密码。这个用户将用于Git操作。步骤4:配置公钥认证首先,我们需要在git用户的主目录下创建.ssh文件夹和authorized_keys文件。由于git用户可能还没有主目录,我们可以先以git用户登录一次(或者通过管理员命令创建目录)。以管理员身份运行PowerShell:#切换到git用户主目录,如果不存在则创建$gitHome="C:\Users\git"if(-not(Test-Path$gitHome)){New-Item-ItemTypeDirectory-Path$gitHome}#设置目录权限,确保git用户拥有icacls$gitHome/grant"git:(OI)(CI)F"#创建.ssh目录$sshDir="$gitHome\.ssh"New-Item-ItemTypeDirectory-Path$sshDir#创建authorized_keys文件(如果不存在)$authKeys="$sshDir\authorized_keys"New-Item-ItemTypeFile-Path$authKeys#设置.ssh目录和authorized_keys文件的权限icacls$sshDir/grant"git:(OI)(CI)F"icacls$authKeys/grant"git:F"#重要:设置authorized_keys文件的权限,只允许git用户访问icacls$authKeys/inheritance:ricacls$sshDir/inheritance:r#将客户端的公钥内容复制到authorized_keys文件中(手动操作或通过命令)注意:将客户端的id_rsa.pub内容追加到authorized_keys文件中(一行一个公钥)。步骤5:创建裸仓库选择一个位置,例如C:\GitRepositories,创建裸仓库:mkdirC:\GitRepositoriescdC:\GitRepositoriesgitinit--baremyrepo.git设置该目录的权限,让git用户有完全控制权限:icaclsC:\GitRepositories/grant"git:(OI)(CI)F"步骤6:客户端测试在客户端(安装了Git的机器),使用:gitclonegit@<server_ip>:/C/GitRepositories/myrepo.git注意:路径的写法。由于OpenSSH服务器将整个Windows文件系统视为根,所以C盘就是/C。也可以写为:gitclonegit@<server_ip>:"C:/GitRepositories/myrepo.git"如果遇到权限问题,请检查服务器上的目录权限和authorized_keys文件的权限。另外,我们也可以使用BonoboGitServer,它提供了图形界面,更易于管理。安装步骤:1.确保已安装IIS(包括ASP.NET4.5)。2.下载BonoboGitServer的ZIP包,解压到IIS的网站目录(如C:\inetpub\wwwroot\Bonobo)。3.在IIS管理器中,添加一个新的网站,指向该目录,端口设为8000(或其他可用端口)。4.访问该网站,首次访问会提示创建管理员账户。5.登录后,可以创建仓库,并设置用户权限。两种方法各有优劣,第一种更接近Linux的SSH方式,第二种有Web界面。根据用户需求,我们提供第一种方法的详细步骤。最后,我们生成相关问题。</think>### 在 Windows 服务器搭建 Git 服务器的完整指南 以下是两种主流方法(原生 SSH 方案和 Bonobo Git Server 方案),根据需求选择: #### **方法 1:基于 Git for Windows + OpenSSH(原生 SSH 方案)** 适用于需要 SSH 协议访问的场景,无需 Web 界面。 1. **安装必要组件** - 下载 [Git for Windows](https://git-scm.com/download/win) - 安装时勾选: - [x] `Use OpenSSH` - [x] `Enable file system caching` 2. **配置 OpenSSH 服务** ```powershell # 以管理员身份运行 PowerShell Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # 安装 SSH 服务 Start-Service sshd # 启动服务 Set-Service -Name sshd -StartupType Automatic # 设置开机自启 ``` 3. **创建专用 Git 用户** ```powershell net user git <password> /add /passwordchg:no # 创建用户(替换 <password>) mkdir C:\GitRepositories # 创建仓库存储目录 icacls "C:\GitRepositories" /grant "git:(OI)(CI)F" # 授予完全控制权 ``` 4. **配置公钥认证** - 在客户端生成 SSH 密钥:`ssh-keygen -t rsa` - 将公钥 `id_rsa.pub` 内容追加到服务器的 `C:\Users\git\.ssh\authorized_keys` - 设置权限(关键步骤): ```powershell icacls "C:\Users\git\.ssh" /grant "git:F" /inheritance:r icacls "C:\Users\git\.ssh\authorized_keys" /grant "git:F" /inheritance:r ``` 5. **创建裸仓库** ```powershell cd C:\GitRepositories git init --bare project.git # 创建裸仓库 ``` 6. **客户端测试** ```bash git clone git@<服务器IP>:/C/GitRepositories/project.git ``` --- #### **方法 2:使用 Bonobo Git Server(带 Web 界面)** 适用于需要 HTTP 访问和图形化管理的场景。 1. **安装依赖** - 启用 IIS 和 ASP.NET 4.5: ```powershell Install-WindowsFeature Web-Server, Web-Asp-Net45 ``` 2. **部署 Bonobo** - 下载 [Bonobo Git Server](https://bonobogitserver.com/) - 解压到 `C:\inetpub\wwwroot\Bonobo` - 在 IIS 中新建网站: - 物理路径:`C:\inetpub\wwwroot\Bonobo` - 端口:`8080`(避免与默认端口冲突) 3. **配置数据库** - 复制 `App_Data\Bonobo.Git.Server.db.sample` 并重命名为 `Bonobo.Git.Server.db` - 修改权限(允许 IIS 用户写入): ```powershell icacls "C:\inetpub\wwwroot\Bonobo\App_Data" /grant "IIS_IUSRS:(OI)(CI)F" ``` 4. **访问 Web 界面** - 打开 `http://<服务器IP>:8080` - 首次登录使用默认管理员: ``` 用户名: admin 密码: admin ``` 5. **创建仓库和用户** - 在 Web 界面创建仓库(如 `my-project`) - 添加用户并设置权限 6. **客户端推送到仓库** ```bash git remote add origin http://<服务器IP>:8080/my-project.git git push -u origin master ``` --- ### **常见问题排查** - **SSH 连接失败**:检查防火墙是否开放 22 端口 ```powershell New-NetFirewallRule -Name "OpenSSH" -DisplayName "OpenSSH Server" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 ``` - **权限拒绝**:确保 `authorized_keys` 文件权限仅限 git 用户访问 - **Bonobo 无法写入**:检查 `App_Data` 目录的 IIS_IUSRS 写权限 --- ### **两种方案对比** | **特性** | Git for Windows + SSH | Bonobo Git Server | |------------------|-----------------------------|----------------------------| | 访问协议 | SSH | HTTP/HTTPS | | Web 管理界面 | ❌ 无 | ✅ 图形化用户/仓库管理 | | 安装复杂度 | ★★☆ 中等 | ★☆☆ 简单 | | 适用场景 | 开发者直接 SSH 访问 | 团队协作,需权限管理 | | 客户端验证 | SSH 密钥 | 用户名/密码 | > ⚠️ 安全建议: > - 对 Bonobo 启用 HTTPS(需配置 IIS SSL 证书) > - 定期更新服务器Git 组件
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值