Jenkins执行SSH连接EC2时权限拒绝,调整密钥权限仍失败
SSH连接EC2实例失败排查方案
错误信息
+ ssh -i /home/ubuntu/myphpApp/key.pem ubuntu@xx.xx.xx.xx /bin/bash Warning: Identity file /home/ubuntu/myphpApp/key.pem not accessible: Permission denied. ubuntu@xx.xx.xx.xx: Permission denied (publickey). [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 255 Finished: FAILURE
已尝试将密钥文件权限设置为400、600、777,但问题仍未解决。
排查步骤
- 检查密钥文件的所有者与所属组:
执行ls -l /home/ubuntu/myphpApp/key.pem查看文件所属,确保执行SSH命令的用户(比如Jenkins Pipeline的运行用户)是文件所有者,或拥有读取权限。若运行用户为jenkins,可执行chown jenkins:jenkins /home/ubuntu/myphpApp/key.pem修改所有者。 - 检查父目录权限:
密钥文件所在目录/home/ubuntu/myphpApp/需保证运行用户有进入权限,执行ls -ld /home/ubuntu/myphpApp/查看,目录权限建议设置为700(仅所有者可访问)或750,避免过开放导致SSH拒绝读取密钥。 - 确认执行命令的用户身份:
在Pipeline中添加whoami命令,确认当前运行SSH的用户,避免因用户身份不匹配导致权限问题。 - 验证密钥文件有效性:
执行ssh-keygen -y -f /home/ubuntu/myphpApp/key.pem,若输出对应公钥则密钥有效,若报错则说明文件损坏或不是合法私钥,需重新获取正确的EC2密钥对。
内容的提问来源于stack exchange,提问作者Patil
相关产品推荐
相关产品推荐

