我正在运行一个 EC2 实例。如何sudo
通过 Jenkins 运行命令?当我尝试时sudo touch /home/ec2-user/foo.bar
,出现以下错误:sudo: no tty present and no askpass program specified
。
我究竟做错了什么?
答案1
默认情况下,没有 TTY 就无法使用 sudo。要使用此功能,请执行以下操作:
- 在 sudoers 中禁用“requiretty”(使用 visudo)
- 这相当于注释掉“Defaults requiretty”(使用 visudo)
- 确保您的用户无需输入密码即可登录:
- 在 sudoers 中设置“NOPASSWD”
- 如果用户不存在则创建用户
- 设置 visiblepw - 这将允许 sudo 工作,即使显示输入的密码
- (当无法禁用回声时,某些情况下是必需的)。