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

Bitbucket Pipeline上传文件时遭遇libcrypto公钥权限拒绝错误

解决Bitbucket Pipeline中SCP到EC2的error in libcrypto permission denied (publickey)问题

针对你遇到的公钥认证失败问题,可以从以下几个方向排查和修复:

  • 验证EC2私钥变量的完整性
    确保Bitbucket仓库的Pipeline变量EC2_KEY包含完整的私钥内容,包括开头的-----BEGIN RSA PRIVATE KEY-----和结尾的-----END RSA PRIVATE KEY-----,没有多余的换行、空格或截断。可以在Pipeline脚本中添加cat ec2_private_key.pem步骤,直接查看生成的密钥文件是否与本地私钥一致。

  • 修正密钥文件的权限与存放路径
    虽然你已经设置了chmod 600 ec2_private_key.pem,但可以尝试将密钥放到SSH默认路径下,减少路径相关的潜在问题:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "$EC2_KEY" > ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
    

    之后scp命令可以省略-i ec2_private_key.pem参数,直接使用默认密钥。

  • 检查EC2实例的公钥配置
    确认EC2实例中ubuntu用户的~/.ssh/authorized_keys文件包含对应私钥的公钥内容。你可以在本地用ssh-keygen -y -f 你的私钥文件生成公钥,对比EC2上的文件是否完全一致。同时要保证:

    • ~/.ssh目录权限为700
    • authorized_keys文件权限为600
      权限不正确会直接导致公钥认证被拒绝。
  • 开启SCP调试模式定位具体问题
    在scp命令中添加-v参数开启详细日志输出,比如:

    scp -v -i ec2_private_key.pem -o StrictHostKeyChecking=no -r "$file" ubuntu@$EC2_HOST:$PATH_TEST"$file"
    

    从日志中可以看到密钥加载、认证交互的每一步,能精准定位是密钥格式错误、路径问题还是EC2端的配置问题。

  • 确认目标目录的权限与存在性
    确保EC2上的$PATH_TEST目录已经存在,且ubuntu用户有写入权限。如果目录不存在,先通过SSH创建:

    ssh -i ec2_private_key.pem ubuntu@$EC2_HOST "mkdir -p $PATH_TEST"
    

    目标目录不存在或权限不足也可能被误报为公钥认证错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:19:57