GitHub Actions加载SSH密钥报错:密钥在GitLab可用但执行时为空
Secrets配置有误
先去仓库的「Settings > Secrets and variables > Actions」页面确认:是否已经添加了名为EBKEY的Secret,且内容是完整的SSH私钥。注意GitHub Secrets区分大小写,变量名必须完全匹配(比如不能写成ebkey或EbKey)。Fork仓库无法继承原仓库Secrets
如果你的流水线运行在Fork出来的仓库里,GitHub默认不会把原仓库的Secrets同步过来。得自己在Fork仓库的Settings里重新添加EBKEY这个Secret。工作流里的Secret引用语法错了
检查工作流文件里的引用代码:必须是${{ secrets.EBKEY }},别少写大括号,也别把secrets写成单数的secret。另外,如果是在bash脚本的单引号里引用,变量不会被解析,得换成双引号包裹。SSH密钥的格式被破坏了
虽然密钥在GitLab能用,但粘贴到GitHub Secrets时可能丢了换行。要确保Secret里完整保留私钥的所有内容,包括开头的-----BEGIN RSA PRIVATE KEY-----和结尾的-----END RSA PRIVATE KEY-----,还有中间的换行。要是还是有问题,可以把私钥先base64编码,在流水线里解码后写入文件:echo "${{ secrets.EBKEY }}" | base64 -d > /home/runner/.ssh/id_rsa工作流权限不够读不到Secrets
检查工作流的权限设置,确保有读取Secrets的权限。可以在工作流文件开头加上:permissions: contents: read id-token: write或者根据实际需求调整权限,避免因为权限不足导致读不到Secrets。
内容的提问来源于stack exchange,提问作者Danushka Stanley

