Jenkins执行ssh启动sh脚本构建成功但后端未实际运行
Jenkins SSH执行脚本显示成功但未实际运行的排查方案
修正命令引号格式
你当前命令用了中文单引号‘’,这会导致Jenkins解析异常,换成英文单引号后重试:ssh -T username@ip 'sh /path/file.sh'验证Jenkins用户的SSH权限
- 确认Jenkins运行用户的公钥已添加到目标服务器
username用户的~/.ssh/authorized_keys中,避免因权限不足导致静默失败 - 在Jenkins机器上,以Jenkins用户身份手动执行SSH命令,模拟Jenkins的执行环境:
su - jenkins -c "ssh -T username@ip 'sh /path/file.sh'"
- 确认Jenkins运行用户的公钥已添加到目标服务器
捕获脚本执行日志
修改命令将脚本输出重定向到日志文件,方便排查具体错误:ssh -T username@ip 'sh /path/file.sh > /tmp/script_run.log 2>&1'之后登录目标服务器查看
/tmp/script_run.log,确认是否存在环境变量缺失、路径错误等问题。检查脚本路径与权限
- 确认
/path/file.sh的绝对路径无拼写错误,目标服务器上该文件确实存在 - 检查脚本执行权限:
若缺少执行权限,执行ssh -T username@ip 'ls -l /path/file.sh'chmod +x /path/file.sh添加权限。
- 确认
处理非交互式Shell的环境差异
手动执行脚本用的是交互式Shell,会加载~/.bashrc等配置文件,但SSH非交互式登录仅加载~/.bash_profile或/etc/profile。如果脚本依赖特定环境变量,可在脚本开头添加:source ~/.bashrc
内容的提问来源于stack exchange,提问作者White Devil
相关产品推荐
相关产品推荐

