如何解决GitHub Actions部署Aptible时ssh-agent的密钥加载错误?
问题
我正尝试通过GitHub Actions部署至Aptible,以下是我的.yml配置文件:
name: Cartwheel Staging CI run-name: ${{ github.actor }} activated these GitHub Actions on: pull_request: branches: [ staging ] env: APTIBLE_ENVIRONMENT: ${{ secrets.APTIBLE_ENVIRONMENT }} APTIBLE_APP: ${{ secrets.APTIBLE_STAGING_APP }} jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - uses: webfactory/ssh-agent@v0.5.4 with: ssh-private-key: ${{ secrets.APTIBLE_GIT_SSH_KEY }} - name: Deploy to Aptible run: | ssh-keyscan beta.aptible.com >> ~/.ssh/known_hosts git remote add staging git@beta.aptible.com:${APTIBLE_ENVIRONMENT}/${APTIBLE_STAGING_APP}.git git push staging ${GITHUB_SHA}:main
执行GitHub Actions时收到如下错误:
Run webfactory/ssh-agent@v0.5.4 with: ssh-private-key: *** env: APTIBLE_ENVIRONMENT: *** APTIBLE_APP: *** Adding GitHub.com keys to /home/runner/.ssh/known_hosts Starting ssh-agent SSH_AUTH_SOCK=/tmp/ssh-XXXXXXRcccK6/agent.1720 SSH_AGENT_PID=1721 Adding private key(s) to agent Error loading key "(stdin)": error in libcrypto Error: Command failed: ssh-add - Error loading key "(stdin)": error in libcrypto
解决方法
- 检查SSH密钥格式:确保
APTIBLE_GIT_SSH_KEY是标准PEM格式私钥,开头为-----BEGIN RSA PRIVATE KEY-----,结尾为-----END RSA PRIVATE KEY-----,每行长度控制在64字符左右。如果是OpenSSH格式(开头为-----BEGIN OPENSSH PRIVATE KEY-----),用ssh-keygen -p -m PEM -f 你的密钥文件转换格式后,重新存入GitHub Secrets。 - 清理密钥多余字符:粘贴密钥到GitHub Secrets时,直接复制私钥文件的完整内容,不要添加额外换行、空格或注释,确保首尾无多余字符。
- 验证密钥有效性:在本地执行
ssh-add 你的密钥文件测试,如果本地也报错,说明密钥损坏,需要重新生成Aptible的SSH密钥。 - 升级ssh-agent版本:当前使用的
webfactory/ssh-agent@v0.5.4版本较旧,尝试升级到最新稳定版(比如v0.8.0),新版本可能修复了密钥兼容性问题。 - 规范密钥生成权限:生成密钥时,确保本地密钥文件权限为
600(执行chmod 600 你的密钥文件),避免因权限问题导致的密钥识别异常。
内容的提问来源于stack exchange,提问作者garthcodes
相关产品推荐
相关产品推荐

