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

SSH连接下OAuth2认证失败,无法完成Firebase部署求助

问题描述

通过SSH连接到Firebase/GCP服务器后,执行部署命令:

sudo firebase deploy --only hosting

出现报错:

Failed to get Firebase project progectname. Please make sure the project exists and your account has permission to access it.

已尝试以下操作均无效:

  • 执行firebase login:跳转OAuth2登录地址,浏览器选谷歌账号授权后报错This site can’t be reached. localhost refused to connect.
  • 执行firebase login --no-localhost:授权后出现Authorization Error Error 400: invalid_request
  • 执行firebase login --reauth:与上述第一种情况报错一致
  • 执行firebase login --reauth --no-localhost:与上述第二种情况报错一致
解决建议

1. 禁用sudo执行Firebase命令

sudo会切换到root用户环境,而Firebase的认证信息通常存储在普通用户目录下,root用户无法读取。直接去掉sudo执行部署命令:

firebase deploy --only hosting

若提示权限不足,调整项目目录的读写权限给当前用户,不要用sudo绕过权限问题。

2. 手动配置服务账号认证

在本地电脑完成以下操作,再同步到SSH服务器:

  • 登录Firebase控制台,进入目标项目
  • 进入项目设置 > 服务账号,点击生成新的私钥,下载JSON密钥文件
  • 将密钥文件上传到SSH服务器的指定目录(例如~/firebase-service-key.json)
  • 在SSH服务器中设置环境变量指定密钥路径:
export GOOGLE_APPLICATION_CREDENTIALS="/home/your-username/firebase-service-key.json"
  • 验证配置:执行firebase projects:list,能列出目标项目即为配置成功,之后再执行部署命令。

3. 修正--no-localhost的登录流程

执行firebase login --no-localhost后,复制控制台输出的授权链接到本地浏览器打开,完成账号授权后,复制页面显示的授权代码,回到SSH服务器的控制台粘贴该代码,完成登录(不要依赖自动跳转,服务器无本地浏览器环境)。

4. 清理缓存并重新初始化项目

在SSH服务器执行以下命令:

firebase logout
rm -rf ~/.firebase
firebase init hosting

初始化过程中重新选择目标项目,注意检查项目名称拼写(报错中的progectname可能存在拼写错误,需与Firebase控制台的项目名称完全一致)。

5. 确认账号权限

登录Firebase控制台的项目设置 > 用户和权限,确认你的谷歌账号拥有该项目的编辑者或所有者权限,避免因权限不足导致无法访问项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:10:30