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

Jenkins通过sshpass执行scp时提示“文件或目录不存在”的问题排查

问题分析与解决

核心问题及修正点

  1. 参数拼接错误:-p '$KEY'与-o之间没有空格,导致sshpass将'$KEY'-o整体识别为密码,无法正确定位后续的scp命令,这是触发"No such file or directory"报错的直接原因。
  2. 变量引用失效:用单引号包裹$KEY会阻止Shell解析变量,$KEY不会被替换为实际密码值,导致sshpass使用错误的认证信息。
  3. 命令格式冗余:Jenkins Shell步骤中无需额外嵌套sh """ ... """,这种写法会造成命令解析异常。

修正后的命令示例

sshpass -p "$KEY" -o StrictHostKeyChecking=no scp *.json $UNAME@$PROD_IP:/home/test

如果是在Jenkinsfile的script块中,正确写法如下:

script {
    sh '''
        sshpass -p "$KEY" -o StrictHostKeyChecking=no scp *.json $UNAME@$PROD_IP:/home/test
    '''
}

额外注意事项

  • 确认Jenkins运行节点已安装sshpass工具,否则会提示找不到该命令。
  • 若密码包含特殊字符,必须用双引号包裹$KEY,避免Shell解析出错。
  • 生产环境不建议使用明文密码传递,优先采用SSH密钥认证方式,安全性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:10:32