You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github Actions中SSH命令触发libcrypto错误的问题求助

解决Github Actions SSH私钥加载失败(error in libcrypto)问题

问题核心

本地ubuntu:latest镜像中测试SSH私钥连接正常,但Github Actions执行时出现私钥加载错误,最终导致权限拒绝,错误提示为Load key "/home/runner/.ssh/private.key": error in libcrypto。

解决方案

1. 检查Github Secrets中私钥的格式

  • 私钥为多行文本(如带-----BEGIN OPENSSH PRIVATE KEY-----和-----END OPENSSH PRIVATE KEY-----的PEM格式),粘贴到Secrets时必须完整保留所有换行,不能手动替换成空格或丢失换行。
  • 正确操作:直接打开本地私钥文件,全选复制所有内容(包括首尾标识行和中间换行),粘贴到Github Secrets的输入框中,不做任何格式修改。

2. 修改私钥写入命令,避免换行丢失

原工作流中echo命令会将私钥的换行转换为空格,导致私钥格式损坏,改用printf或echo -e写入:

- run: printf "%s" "${{ secrets.STAGING_KEY }}" > ~/.ssh/private.key

或:

- run: echo -e "${{ secrets.STAGING_KEY }}" > ~/.ssh/private.key

3. 强化目录与文件权限设置

确保.ssh目录和私钥文件的权限符合SSH要求,补充目录权限设置:

- run: mkdir -p ~/.ssh/
- run: chmod 700 ~/.ssh/
- run: printf "%s" "${{ secrets.STAGING_KEY }}" > ~/.ssh/private.key
- run: chmod 600 ~/.ssh/private.key

4. 验证私钥本身的有效性

将Secrets中的私钥复制到本地文件,执行以下命令验证是否可正常解析:

ssh-keygen -y -f private.key

如果命令报错,说明私钥本身损坏,需重新生成标准格式的私钥(推荐ED25519格式):

ssh-keygen -t ed25519 -f staging_key -N ""

5. 第三方SSH Action的正确配置

如果使用appleboy/ssh-action,确保私钥参数正确传递,Action会自动处理权限和格式:

- name: SSH to staging server
  uses: appleboy/ssh-action@v1.0.3
  with:
    host: ${{ secrets.STAGING_HOST }}
    username: ${{ secrets.STAGING_USER }}
    port: ${{ secrets.STAGING_PORT }}
    key: ${{ secrets.STAGING_KEY }}
    script: whoami

内容的提问来源于stack exchange,提问作者Q_Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:01:30