Я сделал эту модификацию:

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 ответ1

0

Корень в /etc /sudoers должен быть идентификатором пользователя, выполняющего команды .... В вашем примере, это будет 'Ubuntu', я верю.

Ваш пример делает это:

  1. регистрируется в $ machine как root (я предполагаю, что вы настроили эту машину для входа в систему как root. Если нет, вам нужно изменить настройки pam.d, чтобы разрешить вход в систему через ssh. Это не имеет ничего общего с sudo).
  2. В качестве пользователя 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' выполнять эту команду.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .