如何在Expo EAS中配置SSH Agent拉取私有GitHub依赖?
配置EAS Build拉取私有GitHub依赖的SSH代理方案
步骤1:生成专用SSH密钥对
- 生成仅用于EAS Build的SSH密钥(请勿使用个人密钥):
ssh-keygen -t ed25519 -f ~/.ssh/eas-build-key -N "" - 将生成的公钥(
eas-build-key.pub)添加到私有GitHub仓库的Deploy keys中,若需更新依赖可勾选"Allow write access"。
步骤2:在Expo Dashboard存储私钥
- 打开Expo Dashboard进入你的项目,导航到Settings > Secrets。
- 添加新Secret,命名为
EAS_BUILD_SSH_PRIVATE_KEY,值填入刚才生成的私钥文件(eas-build-key)里的完整内容。
步骤3:配置EAS预构建脚本
在项目根目录的eas.json中,为对应构建环境添加pre-build脚本,实现依赖安装前启动ssh-agent并加载私钥:
{ "build": { "production": { "preBuildCommand": "eval $(ssh-agent -s) && echo \"$EAS_BUILD_SSH_PRIVATE_KEY\" | tr -d '\\r' | ssh-add - > /dev/null && mkdir -p ~/.ssh && echo \"StrictHostKeyChecking no\" > ~/.ssh/config" }, "development": { "preBuildCommand": "eval $(ssh-agent -s) && echo \"$EAS_BUILD_SSH_PRIVATE_KEY\" | tr -d '\\r' | ssh-add - > /dev/null && mkdir -p ~/.ssh && echo \"StrictHostKeyChecking no\" > ~/.ssh/config" } } }
- 脚本说明:
eval $(ssh-agent -s):启动ssh-agent进程echo "$EAS_BUILD_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null:将私钥加载到ssh-agent,tr -d '\r'避免Windows换行符引发的密钥识别问题mkdir -p ~/.ssh && echo "StrictHostKeyChecking no" > ~/.ssh/config:禁用主机密钥检查,避免首次连接GitHub时的交互阻塞
步骤4:确认依赖地址格式
确保package.json中的私有依赖使用SSH格式:
{ "dependencies": { "your-private-module": "git+ssh://git@github.com/your-username/your-private-repo.git#v1.0.0" } }
额外注意事项
- 私钥全程通过Expo Secrets管理,绝对不要提交到代码仓库
- 若有多个私有仓库依赖,同一个公钥可添加到所有目标仓库的Deploy keys中
- 构建时可查看EAS日志,确认ssh-agent启动和密钥加载流程无报错
内容的提问来源于stack exchange,提问作者IronManAYaad
相关产品推荐
相关产品推荐

