【问题标题】:Permission issue while executing an ssh task in azure pipeline在 azure 管道中执行 ssh 任务时出现权限问题
【发布时间】:2022-01-01 14:00:32
【问题描述】:

我想要做的是通过 azure 管道在远程机器上运行几行 shell 脚本。我使用 ssh 部署任务来完成此任务。我使用了脚本路径参数来指向包含应该运行的脚本的 .sh 文件。 ssh 任务能够连接到远程主机,但弹出以下权限错误。 有人可以告诉我这里出了什么问题。我正在使用的 .sh 文件是在 Linux 机器本身中创建的,并且在移至存储库之前已将权限级别设置为 777。

在同一阶段的管道中还有另一个 CopyFilesOverSSH@0 任务,该任务完美运行,对同一用户没有任何权限问题。

2021-12-31T12:41:42.1763039Z ##[section]Starting: SSH
2021-12-31T12:41:42.1894277Z ==============================================================================
2021-12-31T12:41:42.1894676Z Task         : SSH
2021-12-31T12:41:42.1895010Z Description  : Run shell commands or a script on a remote machine using SSH
2021-12-31T12:41:42.1895347Z Version      : 0.189.0
2021-12-31T12:41:42.1895637Z Author       : Microsoft Corporation
2021-12-31T12:41:42.1896023Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/ssh
2021-12-31T12:41:42.1896437Z ==============================================================================
2021-12-31T12:41:42.8200834Z Trying to establish an SSH connection to ***@80.xxx.xxx.xxx:22
2021-12-31T12:41:43.1333018Z Successfully connected.
2021-12-31T12:41:43.5698433Z ##[error]Failed to copy script to remote machine. Error: Error: put: Permission denied //checkFileAvailability.sh.
2021-12-31T12:41:43.6050230Z ##[section]Finishing: SSH

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

    首先,如果你想复制文件到远程机器,那么推荐使用Copy Files Over SSH task。此任务允许您使用 SSH 连接到远程计算机,并将匹配一组 minimatch 模式的文件从指定的源文件夹复制到远程计算机上的目标文件夹。支持的文件传输协议是 SFTP 和通过 SFTP 的 SCP。

    对于SSH Deployment task。此任务使您能够使用 SSH 连接到远程计算机并运行命令或脚本。

    根据您的错误信息,SSH 连接成功,但无法将脚本复制到远程机器。服务帐户似乎无权将指定文件复制到远程计算机上的特定路径。请检查您的源文件路径权限设置。也请尝试使用inline script 而不是Script File 来检查它是否有效。

    【讨论】:

    • 感谢安迪的回答。我也尝试了内联脚本。我可以看到抛出了相同的错误 ##[error]Failed to copy script to remote machine。错误:错误:put: Permission denied //sshscript_。我没有尝试使用 CopyfilesoverSSH 任务复制任何文件。我正在尝试执行 ssh 任务 - ssh@0 (使用和内联脚本或通过脚本文件)。也尝试了 windows 和 linux 代理。
    【解决方案2】:

    在非 root 用户下运行 SSH 脚本任务时,我遇到了同样的问题。因此,对于在不同用户下运行的内联脚本,该用户应该具有:

    • 对根文件夹的读/写/执行权限,因为 TFS 将所有命令放入生成的 bash 脚本文件并将其复制到目标计算机根文件夹(下面是另一个命令,它在已复制的脚本文件上执行)

      tr -d '\015' <./sshscript_099d4e8c-44ac-482d-b1bf-84a52c7ab810> ./sshscript_099d4e8c-44ac-482d-b1bf-84a52c7ab810._unix

    • 用户应该有主目录作为 TFS 切换到它

    所以为了解决这个问题,我已向每个人授予 rwx 根文件夹的权限

    chmod 777 /
    ls -ld /
    drwxrwxrwx 20 root root 4096 Feb 10 14:54 /
    

    并确保我的用户的主文件夹存在

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多