Jenkins EC2 Agent主机密钥验证失败,添加命令仍报错求助
问题分析与解决办法
为什么会出现这种路径混乱?
- 你的EC2代理节点上不存在
/home/ubuntu/.ssh目录,所以ssh-keygen -F会报错找不到known_hosts文件。 - Jenkins的Shell执行环境里,
~的解析被覆盖了——原本~应该指向用户主目录/home/ubuntu,但实际被解析成了Jenkins作业的工作区路径/home/ubuntu/workspace/job-name,而这个路径下同样没有.ssh目录,导致写入known_hosts失败。
解决步骤
方法一:修正Shell命令(手动处理)
直接用绝对路径操作,同时确保所需目录和权限符合SSH要求:
# 创建主目录下的.ssh目录(如果不存在) mkdir -p /home/ubuntu/.ssh # 检查目标主机密钥,不存在则添加到known_hosts ssh-keygen -F github.company.com || ssh-keyscan -H -t rsa github.company.com >> /home/ubuntu/.ssh/known_hosts # 设置SSH要求的严格权限,否则可能触发验证失败 chmod 700 /home/ubuntu/.ssh chmod 644 /home/ubuntu/.ssh/known_hosts
方法二:用Jenkins内置功能更省心
在Jenkins全局配置中添加已知主机密钥,避免每次作业手动执行命令:
- 进入Manage Jenkins > Configure System
- 找到SSH Known Hosts模块,点击「Add」
- 输入主机名
github.company.com,点击「Fetch Key」自动获取并添加主机密钥 - 保存配置后,EC2代理节点在执行SSH操作时会自动加载这些已知主机,不会再出现验证错误
内容的提问来源于stack exchange,提问作者Frendom
相关产品推荐
相关产品推荐

