Go 无法启动shell:无法启动pty:fork/exec/usr/bin/sh:不允许操作

Go 无法启动shell:无法启动pty:fork/exec/usr/bin/sh:不允许操作,go,aws-ssm,Go,Aws Ssm,我正在尝试在非root用户本地环境下安装并运行AWS SSM代理。例如,我在操作系统上以ec2用户的身份启动了AmazonSSM代理进程。注册没有问题,我可以在AWS SSM控制台中看到Ping状态为“在线”。但是,当我试图通过会话管理器针对实例启动会话时,它总是失败,并提示如下错误: "Output": "\n----------ERROR-------\nUnable to start shell: Failed to start pty: fork/exec

我正在尝试在非root用户本地环境下安装并运行AWS SSM代理。例如,我在操作系统上以ec2用户的身份启动了AmazonSSM代理进程。注册没有问题,我可以在AWS SSM控制台中看到Ping状态为“在线”。但是,当我试图通过会话管理器针对实例启动会话时,它总是失败,并提示如下错误:

"Output": "\n----------ERROR-------\nUnable to start shell: Failed to start pty: fork/exec /usr/bin/sh: operation not permitted
相关的源代码片段如下:

func StartPty(
    log log.T,
    shellProps mgsContracts.ShellProperties,
    isSessionLogger bool,
    config agentContracts.Configuration,
    plugin *ShellPlugin) (err error) {

    log.Info("Starting pty")
    //Start the command with a pty
    var cmd *exec.Cmd
    if strings.TrimSpace(shellProps.Linux.Commands) == "" || isSessionLogger {
        cmd = exec.Command("sh")
    } else {
        commandArgs := append(utility.ShellPluginCommandArgs, shellProps.Linux.Commands)
        cmd = exec.Command("date", commandArgs...)
    }

....

    ptyFile, err = pty.Start(cmd)
    if err != nil {
        log.Errorf("Failed to start pty: %s\n", err)
        return fmt.Errorf("Failed to start pty: %s\n", err)
    }
起初我认为可能是shell二进制文件的权限问题。但是这没有什么错,每个人都可以运行shell命令

有人知道这里发生了什么,并对如何解决这个问题有什么建议吗?谢谢


顺便说一句,AWS SSM代理源代码基于Go编程语言。

我注意到,如果我以root用户身份启动SSM代理,则一切正常。所以根据这个,我有点确定它与一些特定的文件有关。不幸的是,我不知道如何找到他们。