如何在Windows系统上搭建带SSH验证的局域网Git仓库服务器
在Windows上搭建局域网SSH认证的Git仓库(小团队版)
嘿,刚好我之前帮小团队搭过类似的环境,步骤其实挺简单的,咱们一步步来:
第一步:在服务器端安装Git并创建裸仓库
先选一台Windows机器当Git服务器(普通办公机配置就够用):
- 安装Git for Windows,安装时记得勾选「Git Bash Here」和「Add Git to PATH」(默认选项基本没问题)。
- 找个合适的位置创建裸仓库(裸仓库没有工作目录,专门用来接收推送),比如
D:\GitRepos\myproject.git。打开Git Bash输入命令:mkdir -p D:/GitRepos/myproject.git cd D:/GitRepos/myproject.git git init --bare
第二步:开启Windows自带的OpenSSH服务器
Win10及以上系统自带OpenSSH,无需额外安装:
- 打开「设置」→「应用」→「可选功能」→「添加功能」,搜索「OpenSSH 服务器」完成安装。
- 按Win+R输入
services.msc,找到「OpenSSH SSH Server」服务,设置为「自动启动」并启动服务。
第三步:配置SSH认证(核心环节)
要实现免密码的SSH登录,得配置密钥认证:
- 服务器端准备:
- 在服务器的用户目录(比如
C:\Users\ServerAdmin)下创建.ssh文件夹,再新建authorized_keys文件(注意无后缀名)。 - 给这个文件设置权限:右键→「属性」→「安全」,删除除当前用户和SYSTEM外的所有权限,只保留当前用户的「读取」「写入」权限(权限太宽会被SSH拒绝连接)。
- 在服务器的用户目录(比如
- 客户端生成并上传密钥:
- 每个团队成员打开自己电脑的Git Bash,输入:
一路回车默认生成即可,会在ssh-keygen -t ed25519 -C "your-work-email@xxx.com"C:\Users\YourName\.ssh下得到id_ed25519(私钥,别泄露)和id_ed25519.pub(公钥)。 - 把公钥文件里的内容复制出来,发给服务器管理员,管理员将每个成员的公钥一行行粘贴到服务器的
authorized_keys文件中。
- 每个团队成员打开自己电脑的Git Bash,输入:
第四步:测试仓库访问
现在让团队成员验证连接:
- 先获取服务器的局域网IP:服务器上按Win+R输入
cmd,执行ipconfig找到IPv4地址(比如192.168.1.105)。 - 成员在自己电脑的Git Bash里克隆仓库:
第一次连接会提示确认主机,输入git clone ssh://ServerAdmin@192.168.1.105/D/GitRepos/myproject.gityes即可。成功克隆就说明SSH配置没问题。 - 测试推送:克隆后随便加个文件,提交后推送到服务器:
能正常推送就大功告成了!echo "team repo init" > README.md git add README.md git commit -m "first commit" git push origin main
一些实用小提示
- 服务器防火墙要允许SSH默认端口(22)的入站连接,可在「Windows Defender防火墙」里添加入站规则,允许TCP端口22的连接。
- 若服务器用户名含空格,克隆时要转义或用引号,比如
ssh://"Server Admin"@192.168.1.105/D/GitRepos/myproject.git。 - 裸仓库默认无分支,第一次推送后才会创建main分支,成员克隆后看不到内容是正常现象,推送一次就会显示。
内容的提问来源于stack exchange,提问作者atrivedi




