You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins调用Git中脚本执行SSH命令失败问题求助

解决Jenkins执行Shell脚本中SSH命令未生效的问题

问题场景:Git仓库中存储了名为Job.sh的Shell脚本,内容如下:

echo "Warehouse script starting"
ssh -n username@server_name "mkdir -p ~/directory_name/folder_name/file_name"

在Jenkins的Execute Shell步骤中执行sh job.sh,echo命令可正常输出至控制台,但SSH远程登录并创建目录的操作未执行。

排查与解决建议

  • 验证Jenkins运行用户的SSH免密登录
    Jenkins执行脚本时使用的是自身运行用户(通常是jenkins用户)的权限,而非你本地用户。登录到Jenkins所在节点机器,切换到jenkins用户,手动执行ssh username@server_name,确认是否能免密登录:

    su - jenkins
    ssh username@server_name
    

    如果需要输入密码,说明未建立信任关系。此时需为jenkins用户生成SSH密钥对,将公钥添加到目标服务器username用户的~/.ssh/authorized_keys文件中。

  • 添加SSH调试日志定位问题
    修改Job.sh中的SSH命令,增加-v参数输出详细连接日志,通过Jenkins控制台日志查看具体报错:

    ssh -v -n username@server_name "mkdir -p ~/directory_name/folder_name/file_name"
    

    日志会显示连接过程中的每一步,比如主机密钥验证失败、密钥加载失败等问题。

  • 确认目标服务器路径权限
    手动登录目标服务器,使用username用户执行相同的mkdir命令,确认是否能成功创建目录:

    mkdir -p ~/directory_name/folder_name/file_name
    

    如果失败,检查父目录的读写权限,或者路径是否存在拼写错误。

  • 避免Jenkins环境变量差异
    Jenkins的执行环境可能与本地终端不同,可在Job.sh中添加环境变量输出,确认关键路径和变量:

    echo "当前用户:$(whoami)"
    echo "HOME路径:$HOME"
    echo "SSH路径:$(which ssh)"
    

    必要时使用SSH的绝对路径执行命令,比如/usr/bin/ssh。

  • 检查Jenkins安全配置限制
    确认Jenkins全局安全配置中是否限制了远程命令执行,或者节点的执行权限是否被约束。比如部分安全插件会拦截SSH类操作,可临时禁用插件测试,或调整节点的权限设置。

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:20:32