неинтерактивный ssh sudo … запрашивает пароль в простом тексте

Я выполняю некоторые неинтерактивные команды ssh. Аутентификация SSH заботится о штрафе через ssh агент, но если я выполняю команду, которая требует sudo затем, подсказка пароля в моем терминале является простым текстом. Например:

ssh remotemachine "sudo -u www mkdir -p /path/to/new/folder"

предложит мне пароль в простом тексте. Кто-либо знает, как я могу заставить это использовать нормальную безопасную подсказку или что я могу передать пароль через переключатель? (поскольку затем я могу настроить безопасную подсказку на этой стороне, прежде чем я отправлю команду),

Любая справка очень ценится.

9
задан 13.03.2011, 14:06

1 ответ

Использовать ssh -t:

человек ssh

-t   Force pseudo-tty allocation. This can be used to execute arbitrary 
     screen-based programs on a remote machine, which can be very useful, 
     e.g. when implementing menu services. Multiple -t options force tty 
     allocation, even if ssh has no local tty.

Таким образом, Ваша команда будет

ssh remotemachine -t "sudo -u www mkdir -p /path/to/new/folder"

Если Вы не хотите вводить пароль, Вы можете (если Вас разрешают), изменяют sudoers использование команды visudo.

Добавьте параметр NOPASSWD:, например,

username ALL=(ALL) NOPASSWD: /bin/mkdir

Если Вы не можете отредактировать/etc/sudoers, можно использовать sudo -S:

человек sudo

-S      The -S (stdin) option causes sudo to read the password from
        the standard input instead of the terminal device.  The
        password must be followed by a newline character.

С этим команда была бы

echo "your_password" | ssh remotemachine -t \
     "sudo -S -u www mkdir -p /path/to/new/folder"

Помните, что это добавит Ваш пароль к истории команд Вашей оболочки (с ударом, который был бы ~/.bash_history файл).

13
ответ дан 07.12.2019, 13:21

Теги

Похожие вопросы