jenkins通过sshPut传输文件的时候,报错Permission denied的SftpException

一、背景

使用jenkins的ssh插件传输文件至远程机器的指定目录,php程序打包后,经过zip压缩为oms.zip

zip -rq oms.zip ./ -x '.git/*' -x .env

然后我们求md5值

md5sum oms.zip

最后执行传输。

09:03:02  Executing command on ssh[116.61.10.149]: mkdir -p /opt/php/oms sudo: false
[Pipeline] sshPut
[Pipeline] }
09:03:07  Sending a file/directory to ssh[116.61.10.149]: from: /home/jenkins/agent/workspace/PROD_resource_php_oms/oms.zip into: /opt/php/oms
09:03:08  Failed SFTP PUT: /home/jenkins/agent/workspace/PROD_resource_php_oms/oms.zip -> ssh:/opt/php/oms

二、报错详情

Caused: org.hidetake.groovy.ssh.operation.SftpException: Failed SFTP PUT: /home/jenkins/agent/workspace/PROD_resource_php_oms/oms.zip -> ssh:/opt/php/oms: (SSH_FX_PERMISSION_DENIED: The user does not have sufficient permissions to perform the operation): Permission denied

在这里插入图片描述

三、ssh pipeline

    def remote = [:]
    remote.name = 'ssh'
    remote.host = '116.61.10.149'
    remote.port = 22
    remote.allowAnyHosts = true

    def credentialsId = "285a0928-f35f-4485-a54f-48321aea7212"
    
withCredentials([sshUserPrivateKey(credentialsId: credentialsId, keyFileVariable: 'identity', passphraseVariable: '')]) {
        remote.user = 'phpuser'

        remote.identityFile = identity
        // 创建远程目录
        sshCommand remote: remote, command: "mkdir -p " + remoteFilePath

       // 上传jar或者zip包,以及md5文件
        sshPut remote: remote, from: jarFileName, into: remoteFilePath
        sshPut remote: remote, from: md5FileName, into: remoteFilePath
        // 如果是zip压缩文件,额外上传一个.version文件,内容是版本号
        if (".zip" == fileType) {
            sshPut remote: remote, from: ".version", into: remoteFilePath
        }
    }
   

四、排查过程

手动登录远程机器116.61.10.149,然后进入目标目录,查看目录所属的用户是root,而非phpuser,所以报没有权限的错误。

[root@TEST-jekines ~]# ssh phpuser@116.61.10.149
Last login: Thu Jul 28 09:52:44 2022 from 116.61.10.149

Welcome to Alibaba Cloud Elastic Compute Service !

[phpuser@awx-pre ~]$ cd /opt/php
[phpuser@awx-pre php]$ ll
total 15
drwxr-xr-x 2 root root 4096 Jul 25 09:51 oms
  • 查看文件夹的详情
[phpuser@awx-pre php]$ stat oms
  File: ‘oms’
  Size: 4096            Blocks: 1          IO Block: 16384  directory
Device: 56h/86d Inode: 6993897     Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-07-25 09:51:29.613946996 +0800
Modify: 2023-07-25 09:51:29.613946996 +0800
Change: 2023-07-25 09:51:29.613946996 +0800
 Birth: -

文件夹oms是在2023-07-25 09:51:29由用户root创建的,所以当phpuser用户来尝试创建目录的时候,会失败,继而传输文件也报权限非法的错误。

五、解决问题

rm -rf /opt/php
  • 删除后,目录/opt/php下为空

  • 重试上传文件

[phpuser@awx-pre oms]$ ll -h
total 170M
-rw-rw-r-- 1 phpuser phpuser 170M Jul 31 10:06 oms.zip
-rw-rw-r-- 1 phpuser phpuser   33 Jul 31 10:06 oms.zip.md5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jenkins中,"Permission denied"错误通常表示执行用户缺少足够的权限来执行某个操作。这可能发生在构建过程中或者与Git版本控制系统的集成中。引用提供了解决此问题的一种常见方法。 首先,我们可以回顾脚本执行的过程,发现使用的是root用户,而Jenkins可能是由其他用户执行的。因此,我们需要确保Jenkins以root用户身份运行。可以通过修改Jenkins的配置文件来实现这一点。引用中提到了一种修改方式,在终端中使用命令`vi /etc/default/jenkins`来编辑配置文件,将第19、20行修改为`JENKINS_USER=root`和`JENKINS_GROUP=root`,然后使用命令`chown -R root:root /var/lib/jenkins`、`chown -R root:root /var/cache/jenkins`和`chown -R root:root /var/log/jenkins`来修改相关目录的用户和组。最后,重启Jenkins服务,使用命令`systemctl restart jenkins`。 另外,引用提供了另一种修改Jenkins执行用户的方法。可以使用命令`vim /etc/sysconfig/jenkins`来编辑配置文件,将`JENKINS_USER`改为`root`,保存并关闭文件。然后使用命令`chown -R root:root /var/lib/jenkins`来修改Jenkins的用户和组,最后重启Jenkins服务,使用命令`service jenkins restart`。 需要注意的是,在某些情况下,"Permission denied"错误可能与Git版本控制系统的集成有关。引用中提到的错误消息"Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists."表明SSH密钥验证失败,导致无法从远程仓库读取内容。此问题可能需要检查SSH密钥配置和访问权限设置。 综上所述,当在Jenkins中遇到"Permission denied"错误时,我们可以按照上述方法来解决问题。首先,确保Jenkins以root用户身份运行,然后检查与Git版本控制系统的集成是否存在SSH密钥验证问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Jenkins 构建时大量报权限不够Permission denied](https://blog.csdn.net/qq_29974229/article/details/123974420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [jenkins 构建出现 permission-denied问题](https://blog.csdn.net/feifei10244499/article/details/105714574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Jenkins拉代码提示端口错误](https://download.csdn.net/download/weixin_43397874/10716779)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天草二十六_简村人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值