本地Jenkins通过SSH连接AWS EC2实例失败,求连接方法
Jenkins SSH连接AWS EC2实例故障排查步骤
一、先查网络和安全组
- 确认EC2实例的安全组入站规则开放了22端口,来源要包含本地Jenkins服务器的公网IP(如果是本地内网环境,直接用EC2私网IP,同时确保Jenkins和EC2在同一网络链路)。
- 在本地Jenkins服务器上执行
telnet <EC2实例IP> 22,测试端口是否可达;或者ping EC2的IP,验证网络链路是否正常。
二、密钥对配置要到位
- 确保Jenkins使用的是创建EC2实例时指定的
.pem密钥文件,且文件权限必须设为600:在Jenkins服务器上运行chmod 600 /你的密钥文件路径/xxx.pem,权限过宽会被SSH直接拒绝。 - 在Jenkins的SSH服务器配置中,要么填对密钥文件的绝对路径,要么直接粘贴密钥内容时不要带多余的换行或空格。
三、EC2实例的SSH服务配置验证
- 通过AWS控制台的Session Manager登录EC2实例,检查
/etc/ssh/sshd_config文件:- 确认
PubkeyAuthentication设置为yes,PasswordAuthentication设置为no(用密钥登录场景)。 - 修改配置后重启SSH服务:Ubuntu/Debian系统执行
sudo systemctl restart sshd,CentOS/RHEL系统执行sudo systemctl restart sshd.service。
- 确认
四、Jenkins插件与权限检查
- 确认Jenkins安装了SSH相关插件(比如SSH Agent),插件版本要和当前Jenkins版本兼容。
- 如果Jenkins运行在Windows环境,需把密钥转换为OpenSSH格式,可用Puttygen将
.ppk格式转成.pem格式。 - 检查Jenkins运行用户(比如
jenkins用户)是否有权限读取密钥文件,必要时修改文件所属组:chown jenkins:jenkins /你的密钥文件路径/xxx.pem。
五、手动测试定位问题
- 在Jenkins服务器上手动执行SSH命令测试:
ssh -i /你的密钥文件路径/xxx.pem ec2-user@<EC2实例IP>(Ubuntu系统用ubuntu@<EC2实例IP>,不同发行版用户名不同),根据手动测试的报错信息进一步针对性排查。
内容的提问来源于stack exchange,提问作者Vinay Kumar
相关产品推荐
相关产品推荐

