文档说明
本文档适用于Windows系统下,通过Git Bash采用SSH方式操作公司内网GitLab仓库的配置与使用,可彻底解决HTTPS方式的SSL证书验证问题,且配置后无需重复输入账号密码,实现clone/pull/push等操作的一键执行,适合团队内统一参考使用。
适用范围
- Windows系统+Git Bash工具(Git安装后自带)
- 公司内网GitLab仓库(自签名SSL证书,HTTPS方式克隆报SSL错误)
- 拥有GitLab账号及对应仓库的克隆/读写权限
核心优势
- 避开SSL证书验证问题,无需配置证书或临时关闭验证
- 一次配置,所有该账号有权限的GitLab仓库通用
- 后续操作无需输入账号密码/令牌,提升开发效率
- Git Bash原生支持,无需额外安装SSH工具
前提条件
- 已在Windows系统安装Git(自带Git Bash,建议官网下载最新版)
- 能正常登录公司GitLab网页端(如:
https://git.xxx.xxxxxx.cn) - 个人GitLab账号拥有目标仓库的克隆/读写权限(权限不足请联系仓库管理员添加)
操作步骤
步骤1:在Git Bash中生成SSH密钥对
SSH密钥对包含私钥(id_rsa)和公钥(id_rsa.pub),私钥本地保存,公钥配置到GitLab账号,实现身份认证。
- 打开Git Bash工具(桌面/开始菜单搜索Git Bash即可)
- 执行以下命令生成RSA格式密钥对,邮箱替换为个人GitLab登录邮箱(留空也可,不影响使用):
ssh-keygen -t rsa -C "你的GitLab登录邮箱" - 命令执行后会出现3次交互提示,全程直接按回车键即可(新手不建议设置密钥密码,否则后续每次操作都需输入密码):
- 提示1:
Enter file in which to save the key (/c/Users/你的用户名/.ssh/id_rsa):→ 回车(默认保存路径,Git自动识别) - 提示2:
Enter passphrase (empty for no passphrase):→ 回车(无密钥密码) - 提示3:
Enter same passphrase again:→ 回车(确认无密码)
- 提示1:
- 生成成功后,Windows用户目录下会自动创建
.ssh文件夹(路径:C:\Users\你的用户名\.ssh),内含2个核心文件:id_rsa:私钥,本地唯一,绝对不可泄露、删除或上传至仓库id_rsa.pub:公钥,需复制至GitLab网页端,可随意复制
步骤2:查看并复制本地SSH公钥
执行命令查看公钥完整内容,并完整复制(首尾无多余空格、无字符缺失):
- Git Bash中执行以下命令:
cat ~/.ssh/id_rsa.pub - 命令执行后会输出一长串以
ssh-rsa开头、以填写的邮箱(若有)结尾的字符,即为公钥内容 - 复制方式(Git Bash中):
- 快捷键:选中公钥内容后按
Ctrl+Insert复制,Shift+Insert粘贴 - 右键菜单:选中内容后右键选择「复制」即可
- 快捷键:选中公钥内容后按
步骤3:将公钥配置到个人GitLab账号
公钥与GitLab个人账号绑定,一次配置所有有权限仓库通用,无需为单个仓库单独配置。
- 浏览器登录公司GitLab网页端:
https://git.xxx.xxxxxx.cn - 点击页面右上角个人头像 → 选择「Settings」(设置)
- 在左侧菜单栏找到「SSH Keys」(SSH密钥),点击进入配置页面
- 配置页面填写信息:
- Title:自定义名称(如
Windows-办公电脑/笔记本-开发机),方便区分不同设备的密钥 - Key:将步骤2复制的公钥内容完整粘贴至输入框(请勿修改任何字符)
- Title:自定义名称(如
- 点击页面底部「Add key」(添加密钥),验证成功后即配置完成(若弹出账号密码验证,输入个人GitLab账号密码即可)
步骤4:测试本地SSH与GitLab服务器的连通性
配置公钥后,必须测试连通性,确认身份认证成功后再进行仓库克隆。
- 回到Git Bash,执行以下测试命令(域名与公司GitLab一致,请勿修改):
ssh -T git@git.xxx.xxxxxx.cn - 首次执行会出现安全提示,输入
yes并回车即可:The authenticity of host 'git.xxx.xxxxxx.cn (xxx.xxx.xxx.xxx)' can't be established... Are you sure you want to continue connecting (yes/no/[fingerprint])? - 验证成功:出现类似
Welcome to GitLab, @你的GitLab用户名!的提示,说明SSH配置完成,可正常操作仓库 - 验证失败:若报错,优先排查「公钥是否完整复制」「GitLab账号是否有仓库权限」
步骤5:通过SSH方式克隆GitLab仓库
连通性测试成功后,即可使用SSH地址克隆目标仓库,无任何额外参数。
5.1 获取仓库的SSH地址
- 浏览器打开目标仓库网页端(示例:
https://git.xxx.xxxxxx.cn/.../仓库名称.git) - 页面顶部点击「Clone」按钮,弹出地址选择框,选择SSH并复制地址
- SSH地址格式:
git@git.xxx.xxxxxx.cn:仓库完整路径.git示例仓库SSH地址:git@git.xxx.xxxxxx.cn:.../仓库名称.git
5.2 执行SSH克隆命令
Git Bash中执行以下命令,替换为目标仓库的SSH地址即可:
git clone git@git.xxx.xxxxxx.cn:.../仓库名称.git
克隆过程与HTTPS方式一致,且后续对该仓库执行git pull/git push时,无需输入任何账号密码。
额外实用操作:将已克隆的HTTPS仓库改为SSH方式
若已通过HTTPS方式克隆仓库(无论是否克隆成功),无需重新克隆,直接修改仓库的远程地址为SSH即可,后续操作自动走SSH协议。
- Git Bash中进入已克隆的仓库根目录(示例为桌面仓库,替换为实际路径):
cd /c/Users/你的用户名/Desktop/mone-test-ui - 执行命令修改远程
origin的地址为SSH地址:git remote set-url origin git@git.xxx.xxxxxx.cn:.../仓库名称.git - 验证修改是否成功,执行后显示SSH地址即为配置完成:
git remote -v
重要注意事项
- 私钥安全:本地
.ssh/id_rsa为私钥,是身份认证的核心,不可泄露、删除、修改,也不可上传至代码仓库;若私钥丢失/泄露,立即在GitLab「SSH Keys」页面删除对应公钥。 - 多设备配置:不同电脑/设备需单独生成SSH密钥对,分别添加至GitLab「SSH Keys」页面,设备间互不影响。
- 权限管控:SSH仅负责身份认证,能否操作仓库取决于GitLab账号的仓库权限;若克隆/推送报权限错误,非SSH配置问题,联系仓库管理员为账号分配权限(如开发者、访客)。
- SSH地址规则:公司GitLab所有仓库的SSH地址格式统一,可由HTTPS地址直接转换:
https://git.xxx.xxxxxx.cn/→git@git.xxx.xxxxxx.cn:(将HTTPS的//域名/替换为git@域名:)。 - 命令输入规范:Git Bash中执行命令时,需切换为英文/半角输入法,避免中文标点导致命令执行失败。
常见问题排查
问题1:执行ssh-keygen命令后,Git Bash无任何反应
原因及解决
- 未按回车键执行命令:输入命令后必须按Enter键,终端才会执行;
- 输入法为中文:存在中文标点/字符,切换为英文半角输入法,重新输入命令;
- Git Bash失去焦点:点击Git Bash窗口使其获得焦点,重新输入命令;
- 终端阻塞:关闭当前Git Bash,重新打开后执行命令(直接复制命令避免拼写错误)。
问题2:测试连通性时,提示Permission denied (publickey)
原因及解决
- 公钥复制不完整:重新复制
.ssh/id_rsa.pub的完整内容,在GitLab中重新添加公钥; - 公钥添加错误:确认添加至「个人Settings-SSH Keys」,而非仓库级别的密钥配置;
- 本地私钥路径异常:未使用默认路径生成密钥,需手动配置SSH私钥路径(极少出现,新手建议默认路径)。
问题3:克隆仓库时,提示「仓库不存在」
原因及解决
- SSH地址错误:检查仓库路径是否正确,避免将
/写成:(SSH地址中仅域名后有一个:); - 账号无仓库权限:联系仓库管理员,将个人GitLab账号添加至仓库并分配权限。
总结
- SSH方式是公司内网GitLab仓库的首选操作方式,一次配置所有有权限仓库通用;
- 核心流程:生成密钥对 → 复制公钥 → GitLab配置公钥 → 测试连通性 → SSH克隆;
- 关键验证命令:
ssh -T git@git.xxx.xxxxxx.cn,出现欢迎语即配置成功; - 权限问题与SSH无关,由GitLab账号层面管控,权限不足联系管理员即可。