Корень в /etc /sudoers должен быть идентификатором пользователя, выполняющего команды .... В вашем примере, это будет 'Ubuntu', я верю.
Ваш пример делает это:
- регистрируется в $ machine как root (я предполагаю, что вы настроили эту машину для входа в систему как root. Если нет, вам нужно изменить настройки pam.d, чтобы разрешить вход в систему через ssh. Это не имеет ничего общего с sudo).
- В качестве пользователя root @ # ваша команда ssh обращается к ubuntu @ address и выполняет команду 'sudo service cassandra start'.
Ваш пример показывает, что вам нужно включить sudo для ubuntu, а не root, чтобы иметь возможность выполнять сервисные команды.
Пример:
# User privilege specification
ubuntu ALL=(root) NOPASSWD: /usr/bin/service cassandra *
РЕДАКТИРОВАТЬ: Я действительно смущен относительно того, что вы пытаетесь достичь. Если вы просто пытаетесь подключиться по ssh к другому серверу и запустить эту служебную команду, все, что требуется, это в вашем сценарии оболочки:
Ваша команда будет выглядеть так:
sshpass -p 'ubuntu' ssh -t ubuntu@$address -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nul -x 'sudo service cassandra start'
Кроме того, вам все еще нужно добавить мои правки в /etc /sudoers, как указано выше, чтобы разрешить 'ubuntu' выполнять эту команду.