Vercel部署报错Host key verification failed,本地构建正常求解决
解决Vercel部署时yarn install报错(Exit code 128)
错误核心
你遇到的问题包含两个关键点:
- 依赖冲突警告:
ethereumjs-abi同时通过Git仓库URL和版本号两种方式被声明,导致依赖解析时出现重复路径提示 - 致命SSH验证错误:Vercel的构建环境未配置GitHub SSH访问权限,通过SSH拉取仓库时触发
Host key verification failed,最终导致yarn install退出码128
解决方案
1. 统一依赖声明(优先推荐)
打开项目的package.json,找到ethereumjs-abi的依赖配置,将Git URL形式的声明替换为标准npm版本号:
- 原错误配置示例:
"dependencies": { "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", // 可能同时存在 "ethereumjs-abi": "^0.6.8" } - 修改为统一版本号:
"dependencies": { "ethereumjs-abi": "^0.6.8" }
这样既解决了依赖重复的警告,又避免了直接拉取Git仓库的需求,适配Vercel的默认构建环境。
2. 若必须依赖Git仓库(不推荐)
如果项目确实需要直接使用该Git仓库而非npm包,需为Vercel配置SSH访问权限:
- 本地生成SSH密钥:执行
ssh-keygen -t ed25519 -C "your-email@example.com",一路回车生成密钥对 - 将生成的公钥(
~/.ssh/id_ed25519.pub内容)添加到GitHub账号的SSH密钥列表中 - 在Vercel项目的「Settings」→「Environment Variables」中添加变量
SSH_KEY,值为私钥(~/.ssh/id_ed25519内容) - 修改Vercel构建命令,提前添加GitHub主机信任:
ssh-keyscan github.com >> ~/.ssh/known_hosts && yarn install && yarn build
3. 清理缓存后重新部署
本地执行以下命令清理依赖缓存,推送代码后触发Vercel重新构建:
rm -rf node_modules rm yarn.lock yarn install git add . git commit -m "Fix vercel deployment dependency issue" git push
额外检查项
- 确认Vercel关联的GitHub仓库权限正常,无访问限制
- 排查项目中是否还有其他依赖使用Git SSH地址,统一处理
内容的提问来源于stack exchange,提问作者Yilmaz
相关产品推荐
相关产品推荐

