You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Forge单项目部署失败:Git公钥权限问题求助

Laravel Forge单个项目Git部署Permission Denied问题排查方案

问题概述

同服务器上的其他Laravel项目均可正常推送部署,但一个2021年最后更新的项目部署失败,报错:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

已尝试的操作未解决:

  • 尝试添加部署密钥提示已被使用;本地设备公钥已部署到服务器,维护其他项目正常
  • SSH登录服务器确认git config配置正确
  • 重新设置远程仓库URL排除地址错误
  • 确认组织内旧开发者账户无关联SSH密钥
  • 在服务器通过ssh-agent生成新密钥并添加到个人账户
  • 再次添加部署密钥仍提示已被使用

针对性排查方案

1. 为当前项目配置独立部署密钥

提示密钥已被使用,大概率是该密钥已关联到其他仓库,但未授权给当前项目。直接为该项目生成专属密钥:

  • SSH登录服务器,切换到部署用户(如sudo -u forge bash),生成新密钥:
    ssh-keygen -t ed25519 -C "forge-deploy-你的项目名"
    
    一路回车跳过密码设置,避免部署时需要手动输入。
  • 复制新公钥内容:
    cat ~/.ssh/id_ed25519_你的项目名.pub
    
  • 登录GitHub该仓库的Settings > Deploy keys,添加此公钥,勾选读取权限。
  • 进入项目目录,配置git使用该密钥:
    git config core.sshCommand "ssh -i ~/.ssh/id_ed25519_你的项目名 -F /dev/null"
    

2. 验证仓库级访问权限

由于项目长期未更新,可能组织权限政策变更:

  • 确认你的GitHub账户(或部署用账户)拥有该仓库的读取权限,若为私有仓库,需联系组织管理员添加权限。
  • 检查仓库是否被转移、重命名,或组织是否启用了SSH密钥IP白名单、强制使用GitHub App等限制策略。

3. 检查Laravel Forge项目的部署配置差异

同服务器项目正常不代表单个项目配置一致:

  • 在Laravel Forge的项目页面,查看Deployment选项卡的部署用户是否与其他项目相同,部分项目可能配置了独立系统用户。
  • 检查项目环境变量,确认是否存在GIT_SSH_COMMAND等覆盖全局SSH设置的配置。

4. 测试服务器到GitHub的定向SSH连接

切换到部署用户后,指定密钥测试连接:

ssh -i ~/.ssh/你的项目专属密钥 -T git@github.com

正常输出应为Hi 用户名/仓库名! You've successfully authenticated, but GitHub does not provide shell access.,若仍报错,说明密钥与仓库权限不匹配。

5. 切换远程仓库协议(SSH/HTTPS)

若SSH方式始终有问题,可临时切换为HTTPS协议,使用个人访问令牌验证:

  • 生成GitHub个人访问令牌(需仓库读取权限)。
  • 更新项目远程URL:
    git remote set-url origin https://<你的令牌>@github.com/用户名/仓库名.git
    

内容的提问来源于stack exchange,提问作者erinam99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:30:27