Windows11下GitLab SSH克隆权限拒绝及指纹不匹配问题求助
解决GitLab SSH克隆权限拒绝及指纹不匹配问题
1. 核对指纹格式差异
Windows OpenSSH默认显示MD5格式的指纹,而GitLab后台展示的通常是SHA256格式,这是你看到指纹不匹配的常见原因。用以下命令生成SHA256格式的指纹,再和GitLab上的对比:
ssh-keygen -lf ~/.ssh/id_rsa.pub -E sha256
(如果使用ed25519密钥,将id_rsa.pub替换为id_ed25519.pub)
2. 强制指定密钥文件连接
Windows可能默认加载了其他SSH密钥(如系统自带、其他工具生成的),导致GitLab无法匹配你上传的密钥。创建/修改~/.ssh/config文件,添加以下配置:
Host <你的GitLab服务器地址> HostName <你的GitLab服务器地址> User git IdentityFile ~/.ssh/id_rsa # 替换为你实际的私钥文件名 IdentitiesOnly yes
保存后用ssh -T git@<你的GitLab服务器地址>测试连接,确保强制使用指定密钥。
3. 严格检查文件权限
Windows下SSH对密钥文件权限要求苛刻,权限过宽会导致连接被拒绝:
- 右键
.ssh文件夹 → 属性 → 安全 → 高级 → 禁用继承 → 删除所有非当前用户的权限条目,仅保留当前Windows用户的完全控制权限。 - 对私钥文件(如
id_rsa)执行同样操作,确保只有当前用户能读取,其他用户无任何权限。
4. 重新确认GitLab公钥配置
- 打开本地公钥文件(
id_rsa.pub),复制全部内容,确保不遗漏开头的ssh-rsa(或ssh-ed25519)和结尾注释,也不要多添空格或换行。 - 登录GitLab,进入个人设置 → SSH密钥,删除旧密钥,粘贴新公钥内容,保存后等待1-2分钟再测试连接。
5. 排查OpenSSH服务状态
打开Windows服务管理器,找到OpenSSH Authentication Agent服务,确保它处于运行状态且启动类型设为自动。若未运行,启动后重新测试连接。
内容的提问来源于stack exchange,提问作者Yap Wei Cheng
相关产品推荐
相关产品推荐

