Azure Batch 错误:“sudo:不存在 tty 且未指定 askpass 程序”

Posted

技术标签:

【中文标题】Azure Batch 错误:“sudo:不存在 tty 且未指定 askpass 程序”【英文标题】:Azure Batch error : "sudo: no tty present and no askpass program specified" 【发布时间】:2021-11-02 21:54:18 【问题描述】:

我是 Azure Batch 的新手,遇到了一个似乎无法解决的错误。 我按照本教程https://github.com/Azure-Samples/azure-batch-samples/tree/master/javascript 测试 Azure Batch,但服务没有运行,当我查看“准备任务”菜单时出现此错误:“sudo: no tty present and no askpass program specified”

执行sample.js文件的命令“sudo sh startup_prereq.sh > startup.log”时出现问题。 根据网上不同的cmet,需要提供用户名和密码才能通过,但我不知道怎么做。

你知道我该如何解决这个问题吗?

谢谢

【问题讨论】:

【参考方案1】:

问题是由于执行了一个尝试请求密码的sudo 命令,但sudo 无权访问tty 来提示用户输入密码。

由于找不到ttysudo 回退到askpass 方法但找不到配置的askpass 命令,因此sudo 命令失败。

要解决此问题,您需要能够为该特定用户运行sudo,而无需密码。 无密码要求/etc/sudoers 文件中配置。 要对其进行配置,请运行以下任一命令:

sudo nano /etc/sudoers

sudo visudo

注意:这将使用您的默认编辑器打开/etc/sudoers 文件。

接下来,在文件底部添加以下行:

# Allow members to run all commands without a password
my_user ALL=(ALL) NOPASSWD:ALL

注意:将my_user替换为您的实际用户

如果您希望用户运行特定命令,您可以指定它们

# Allow members to run specific commands without a password
my_user ALL=(ALL) NOPASSWD:/bin/myCommand

# Allow members to run specific commands without a password
my_user ALL=(ALL) NOPASSWD: /bin/myCommand, /bin/myCommand, /bin/myCommand

保存更改并退出文件。

更多信息,你可以参考这个link。

【讨论】:

感谢您的建议。我找到了解决此问题的另一种方法,并且软件包的安装进展顺利,但我面临另一个问题。我在上面发布了这个【参考方案2】:

我设法通过在 sample.js 文件中添加这个来解决问题:

userIdentity: 
                autoUser: 
                    elevationLevel: "admin",
                    scope: "pool"
                
              

同样的序列,我在 createTasks 部分添加了它:

我已经成功安装了这个文件 workitems/processcsvjob/job-1/installprereq/stdout.txt 中显示的软件包,它没有指向任何错误。

【讨论】:

以上是关于Azure Batch 错误:“sudo:不存在 tty 且未指定 askpass 程序”的主要内容,如果未能解决你的问题,请参考以下文章

Azure Batch 和在 Azure 存储中创建容器文件夹

多快好省 -- Azure Batch AI 训练篇

连接到代理后面的 Azure Batch - 操作返回了无效的状态代码“禁止”

Azure Functions + Azure Batch实现MP3音频转码方案

在 Azure Batch 中使用托管标识在批处理池中使用 Python 对 Key Vault 进行身份验证

尝试执行 sudo 命令时给出“sudo:不存在 tty 且未指定 askpass 程序”的 shell 脚本 [重复]