Jenkins执行Shell脚本迁移文件至AWS远程服务器报错求助
问题解决:Jenkins执行rsync时Host key verification failed错误
核心原因
Jenkins默认以jenkins系统用户运行,而你在终端执行脚本用的是自己的登录用户(比如root/普通用户),二者的SSH配置目录(~/.ssh)完全独立,导致Jenkins用户没有缓存远程AWS服务器的主机密钥,也没有对应的登录密钥。
解决步骤
切换到Jenkins系统用户
执行命令切换到Jenkins用户的环境:sudo su - jenkins(注意带
-,确保进入Jenkins用户的家目录)手动验证远程主机密钥
执行一次SSH连接到AWS服务器,确认并缓存主机密钥:ssh 你的AWS服务器用户名@服务器IP/域名当提示
Are you sure you want to continue connecting (yes/no/[fingerprint])?时,输入yes回车,完成主机密钥缓存。配置Jenkins用户的SSH登录密钥
如果你的脚本用密钥登录AWS服务器,需要把私钥复制到Jenkins用户的.ssh目录,并设置正确权限:# 复制私钥到Jenkins用户目录(替换为你的私钥路径) cp /path/to/your/private-key ~/.ssh/id_rsa # 设置权限(必须严格,否则SSH会拒绝使用) chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa测试rsync命令
在Jenkins用户环境下,直接执行脚本中的rsync命令,确认能正常运行:rsync -avz /var/lib/jenkins/workspace/axxxxxxg.co.uk/ 你的AWS服务器用户名@服务器IP:/目标路径/应急方案(不推荐,安全性低)
如果暂时无法手动缓存主机密钥,可以在rsync命令中添加跳过主机验证的参数:rsync -avz -e "ssh -o StrictHostKeyChecking=no" /源路径/ 你的AWS服务器用户名@服务器IP:/目标路径/
内容的提问来源于stack exchange,提问作者Niranjaysingh Rajput
相关产品推荐
相关产品推荐

