Windows环境下GitLab仓库SSH方式克隆配置操作步骤(知识点笔记)

10 阅读7分钟

文档说明

本文档适用于Windows系统下,通过Git Bash采用SSH方式操作公司内网GitLab仓库的配置与使用,可彻底解决HTTPS方式的SSL证书验证问题,且配置后无需重复输入账号密码,实现clone/pull/push等操作的一键执行,适合团队内统一参考使用。

适用范围

  1. Windows系统+Git Bash工具(Git安装后自带)
  2. 公司内网GitLab仓库(自签名SSL证书,HTTPS方式克隆报SSL错误)
  3. 拥有GitLab账号及对应仓库的克隆/读写权限

核心优势

  1. 避开SSL证书验证问题,无需配置证书或临时关闭验证
  2. 一次配置,所有该账号有权限的GitLab仓库通用
  3. 后续操作无需输入账号密码/令牌,提升开发效率
  4. Git Bash原生支持,无需额外安装SSH工具

前提条件

  1. 已在Windows系统安装Git(自带Git Bash,建议官网下载最新版)
  2. 能正常登录公司GitLab网页端(如:https://git.xxx.xxxxxx.cn
  3. 个人GitLab账号拥有目标仓库的克隆/读写权限(权限不足请联系仓库管理员添加)

操作步骤

步骤1:在Git Bash中生成SSH密钥对

SSH密钥对包含私钥(id_rsa)公钥(id_rsa.pub),私钥本地保存,公钥配置到GitLab账号,实现身份认证。

  1. 打开Git Bash工具(桌面/开始菜单搜索Git Bash即可)
  2. 执行以下命令生成RSA格式密钥对,邮箱替换为个人GitLab登录邮箱(留空也可,不影响使用):
    ssh-keygen -t rsa -C "你的GitLab登录邮箱"
    
  3. 命令执行后会出现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: → 回车(确认无密码)
  4. 生成成功后,Windows用户目录下会自动创建.ssh文件夹(路径:C:\Users\你的用户名\.ssh),内含2个核心文件:
    • id_rsa:私钥,本地唯一,绝对不可泄露、删除或上传至仓库
    • id_rsa.pub:公钥,需复制至GitLab网页端,可随意复制

步骤2:查看并复制本地SSH公钥

执行命令查看公钥完整内容,并完整复制(首尾无多余空格、无字符缺失):

  1. Git Bash中执行以下命令:
    cat ~/.ssh/id_rsa.pub
    
  2. 命令执行后会输出一长串以ssh-rsa开头、以填写的邮箱(若有)结尾的字符,即为公钥内容
  3. 复制方式(Git Bash中):
    • 快捷键:选中公钥内容后按Ctrl+Insert复制,Shift+Insert粘贴
    • 右键菜单:选中内容后右键选择「复制」即可

步骤3:将公钥配置到个人GitLab账号

公钥与GitLab个人账号绑定,一次配置所有有权限仓库通用,无需为单个仓库单独配置。

  1. 浏览器登录公司GitLab网页端:https://git.xxx.xxxxxx.cn
  2. 点击页面右上角个人头像 → 选择「Settings」(设置)
  3. 在左侧菜单栏找到「SSH Keys」(SSH密钥),点击进入配置页面
  4. 配置页面填写信息:
    • Title:自定义名称(如Windows-办公电脑/笔记本-开发机),方便区分不同设备的密钥
    • Key:将步骤2复制的公钥内容完整粘贴至输入框(请勿修改任何字符)
  5. 点击页面底部「Add key」(添加密钥),验证成功后即配置完成(若弹出账号密码验证,输入个人GitLab账号密码即可)

步骤4:测试本地SSH与GitLab服务器的连通性

配置公钥后,必须测试连通性,确认身份认证成功后再进行仓库克隆。

  1. 回到Git Bash,执行以下测试命令(域名与公司GitLab一致,请勿修改):
    ssh -T git@git.xxx.xxxxxx.cn
    
  2. 首次执行会出现安全提示,输入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])?
    
  3. 验证成功:出现类似Welcome to GitLab, @你的GitLab用户名!的提示,说明SSH配置完成,可正常操作仓库
  4. 验证失败:若报错,优先排查「公钥是否完整复制」「GitLab账号是否有仓库权限」

步骤5:通过SSH方式克隆GitLab仓库

连通性测试成功后,即可使用SSH地址克隆目标仓库,无任何额外参数。

5.1 获取仓库的SSH地址

  1. 浏览器打开目标仓库网页端(示例:https://git.xxx.xxxxxx.cn/.../仓库名称.git
  2. 页面顶部点击「Clone」按钮,弹出地址选择框,选择SSH并复制地址
  3. 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协议。

  1. Git Bash中进入已克隆的仓库根目录(示例为桌面仓库,替换为实际路径):
    cd /c/Users/你的用户名/Desktop/mone-test-ui
    
  2. 执行命令修改远程origin的地址为SSH地址:
    git remote set-url origin git@git.xxx.xxxxxx.cn:.../仓库名称.git
    
  3. 验证修改是否成功,执行后显示SSH地址即为配置完成:
    git remote -v
    

重要注意事项

  1. 私钥安全:本地.ssh/id_rsa为私钥,是身份认证的核心,不可泄露、删除、修改,也不可上传至代码仓库;若私钥丢失/泄露,立即在GitLab「SSH Keys」页面删除对应公钥。
  2. 多设备配置:不同电脑/设备需单独生成SSH密钥对,分别添加至GitLab「SSH Keys」页面,设备间互不影响。
  3. 权限管控:SSH仅负责身份认证,能否操作仓库取决于GitLab账号的仓库权限;若克隆/推送报权限错误,非SSH配置问题,联系仓库管理员为账号分配权限(如开发者、访客)。
  4. SSH地址规则:公司GitLab所有仓库的SSH地址格式统一,可由HTTPS地址直接转换:https://git.xxx.xxxxxx.cn/git@git.xxx.xxxxxx.cn:(将HTTPS的//域名/替换为git@域名:)。
  5. 命令输入规范:Git Bash中执行命令时,需切换为英文/半角输入法,避免中文标点导致命令执行失败。

常见问题排查

问题1:执行ssh-keygen命令后,Git Bash无任何反应

原因及解决

  1. 未按回车键执行命令:输入命令后必须按Enter键,终端才会执行;
  2. 输入法为中文:存在中文标点/字符,切换为英文半角输入法,重新输入命令;
  3. Git Bash失去焦点:点击Git Bash窗口使其获得焦点,重新输入命令;
  4. 终端阻塞:关闭当前Git Bash,重新打开后执行命令(直接复制命令避免拼写错误)。

问题2:测试连通性时,提示Permission denied (publickey)

原因及解决

  1. 公钥复制不完整:重新复制.ssh/id_rsa.pub的完整内容,在GitLab中重新添加公钥;
  2. 公钥添加错误:确认添加至「个人Settings-SSH Keys」,而非仓库级别的密钥配置;
  3. 本地私钥路径异常:未使用默认路径生成密钥,需手动配置SSH私钥路径(极少出现,新手建议默认路径)。

问题3:克隆仓库时,提示「仓库不存在」

原因及解决

  1. SSH地址错误:检查仓库路径是否正确,避免将/写成:(SSH地址中仅域名后有一个:);
  2. 账号无仓库权限:联系仓库管理员,将个人GitLab账号添加至仓库并分配权限。

总结

  1. SSH方式是公司内网GitLab仓库的首选操作方式,一次配置所有有权限仓库通用;
  2. 核心流程:生成密钥对 → 复制公钥 → GitLab配置公钥 → 测试连通性 → SSH克隆
  3. 关键验证命令:ssh -T git@git.xxx.xxxxxx.cn,出现欢迎语即配置成功;
  4. 权限问题与SSH无关,由GitLab账号层面管控,权限不足联系管理员即可。