避免使用 root 密码

避免使用 root 密码

我已经做了这样的修改:

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”。

你的例子是这样的:

  1. 以 root 身份登录到 $machine(我假设您已将该机器设置为能够以 root 身份登录。如果没有,您需要调整 pam.d 设置以允许 root 通过 ssh 登录。这与 sudo 无关)。
  2. 作为 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”执行该命令。

相关内容