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

使用scp向EC2复制Ansible playbook时报私钥权限错误如何解决?

问题根因

你遇到的报错有两个核心原因:

  1. 本地默认SSH私钥文件~/.ssh/id_rsa权限为755,不符合SSH的安全要求,被程序直接忽略
  2. 你的scp命令未显式指定使用ansible-benchmark.pem密钥,也未指定EC2实例的登录用户名,默认走的认证配置和EC2的要求不匹配
解决方案

步骤1:修复本地SSH目录及默认私钥权限

SSH对本地密钥相关的目录和文件权限要求非常严格,目录权限不能超过700,私钥文件权限不能超过600,否则会直接拒绝加载对应密钥,执行以下命令修复:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

步骤2:修改scp命令,显式指定密钥和EC2登录用户名

修改你的传输命令,增加-i参数指定密钥路径,同时补充EC2的登录用户名:

scp -i ~/.ssh/id-rsa/ansible-benchmark.pem /Users/mohammedkhot/Documents/terraform-consul/cis-playbook/main.yaml ec2-user@ec2-18-170-61-4.eu-west-2.compute.amazonaws.com:/etc/ansible

注意两点:

  • 必须加-i参数指定你要使用的私钥路径,否则SSH默认只会读取~/.ssh/id_rsa文件
  • 要确认EC2实例的登录用户名:Amazon Linux默认用户为ec2-user,Ubuntu默认用户为ubuntu,CentOS默认用户为centos。如果你的实例不是Amazon Linux,替换命令中的ec2-user为对应系统的默认用户名即可。

步骤3:目录写入报错补充处理

如果执行上述命令后,公钥认证成功但出现无法写入/etc/ansible目录的报错,说明当前登录用户没有该目录的写入权限,可以先把文件传到用户家目录,再登录实例移动到目标路径:

# 第一步:先传文件到EC2用户的家目录
scp -i ~/.ssh/id-rsa/ansible-benchmark.pem /Users/mohammedkhot/Documents/terraform-consul/cis-playbook/main.yaml ec2-user@ec2-18-170-61-4.eu-west-2.compute.amazonaws.com:~/

# 第二步:SSH登录EC2,移动文件到目标目录
ssh -i ~/.ssh/id-rsa/ansible-benchmark.pem ec2-user@ec2-18-170-61-4.eu-west-2.compute.amazonaws.com
sudo mv ~/main.yaml /etc/ansible/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:06:01