GitHub Action中SSH密钥验证GitHub失败:Host key verification failed
解决GitHub Action中SSH连接GitHub出现「Host key verification failed」的问题
以下是针对你的场景的排查和修复建议:
1. 修正SSH配置文件路径错误
你的代码中写入SSH配置的路径是~/.ssh/config/config,但SSH默认读取的配置文件是~/.ssh/config(并非子目录下的文件),这会导致IdentityFile配置完全不生效。修改这两步:
echo "Host github.com" >> ~/.ssh/config echo " IdentityFile ~/.ssh/github_identity.pem" >> ~/.ssh/config
2. 严格设置目录和文件权限
SSH对权限要求非常严格,除了私钥的600权限,还需要确保.ssh目录本身是700权限,否则会被SSH拒绝访问:
mkdir -p ~/.ssh chmod 700 ~/.ssh # 新增这一步 echo $EB_COMMON_ACCESS_KEY >> ~/.ssh/github_identity.pem chmod 600 ~/.ssh/github_identity.pem
3. 确保known_hosts正确生成
尝试追加而非覆盖known_hosts(避免意外清空原有内容),同时可以验证生成的内容:
ssh-keyscan -H github.com >> ~/.ssh/known_hosts # 用>>代替> cat ~/.ssh/known_hosts # 新增这一步,在Action日志里检查是否包含github.com的公钥
4. 启用StrictHostKeyChecking并验证配置
取消注释StrictHostKeyChecking的配置,同时确保配置格式正确(缩进正确):
echo " StrictHostKeyChecking no" >> ~/.ssh/config
5. 增加SSH调试日志定位问题
在测试SSH时添加-vvv参数获取详细日志,这能帮你精准定位是配置、权限还是密钥本身的问题:
ssh -vvv git@github.com ls /
额外验证点
- 确认
$EB_COMMON_ACCESS_KEY变量在GitHub Action中正确注入,没有换行或格式错误,可以用echo $EB_COMMON_ACCESS_KEY | cat -A查看变量内容的格式 - 尝试使用绝对路径指定身份文件,比如
/home/runner/.ssh/github_identity.pem,避免~在某些shell环境下解析异常
内容的提问来源于stack exchange,提问作者vidi
相关产品推荐
相关产品推荐

