我已经做了这样的修改:
vim /etc/sudoers
# User privilege specification
root ALL=(ALL) NOPASSWD: ALL
当我使用时:
sudo service cassandra start
无需密码即可使用。但是,当我使用:
script shell
ssh -t root@$machine -x "sshpass -p 'ubuntu' ssh -t ubuntu@$address -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nul -x 'sudo service cassandra start'"
我必须输入密码!
你知道为什么它不能与 ssh 一起工作吗?
非常感谢您的帮助。谨致问候。
答案1
/etc/sudoers 中的“root”应该是用户的 ID执行命令....在您的示例中,我相信这将是“ubuntu”。
你的例子是这样的:
- 以 root 身份登录到 $machine(我假设您已将该机器设置为能够以 root 身份登录。如果没有,您需要调整 pam.d 设置以允许 root 通过 ssh 登录。这与 sudo 无关)。
- 作为 root@#machine,您的命令 ssh 到 ubuntu@address 并执行命令“sudo service cassandra start”。
从您的示例来看,您需要为 ubuntu 启用 sudo,而不是 root 才能执行服务命令。
例子:
# User privilege specification
ubuntu ALL=(root) NOPASSWD: /usr/bin/service cassandra *
编辑:我真的很困惑你想要完成什么。如果你只是试图 ssh 到另一台服务器并运行该服务命令,那么你只需要在 shell 脚本中输入以下内容:
你的命令看起来会像这样:
sshpass -p 'ubuntu' ssh -t ubuntu@$address -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nul -x 'sudo service cassandra start'
此外,您仍然需要按照上述内容将我的编辑添加到 /etc/sudoers 中,以允许“ubuntu”执行该命令。