我有一个 AIX 6.1 服务器,我需要sudo
在 bash 脚本中运行远程命令。
这是我的 bash 脚本的简化:
测试Sudo.sh
#!/usr/bin/bash
set -x
sudo env
我可以sudo
在本地运行命令而无需密码:
[user@server]$ sudo env
VAR=VAL
...
我可以在本地运行该脚本:
[user@server]$ /tmp/testSudo.sh
+ sudo env
VAR=VAL
...
我可以sudo
在远程主机上运行:
[user@client]$ ssh user@server sudo env
VAR=VAL
...
我可以使用 tty 在远程主机上运行脚本:
[user@client]$ ssh -t user@server /tmp/testSudo.sh
+ sudo env
VAR=VAL
...
我无法在没有 tty 的情况下在远程主机上运行脚本(并且我无法在上下文中添加 -t 选项):
[user@client]$ ssh user@server /tmp/testSudo.sh
+ sudo env
它挂在那里。
答案1
在没有终端的情况下执行时,Sudo 需要一个帮助程序来处理密码查询:
SUDO_ASKPASS Specifies the path to a helper program used to read the
password if no terminal is available or if the -A option is specified.
通常,当您通过 ssh 和 sudo 连接时,需要输入密码,但未分配终端,则会报错 - 在 AIX 上,这可能会有所不同。
检查您的 sudo 设置并从所有远程计算机启用 NOPASSWD,正确的规则应该如下所示(将其添加到 /etc/sudoers 的末尾):
user ALL= NOPASSWD:/tmp/testSudo.sh