Я выполняю некоторые неинтерактивные команды ssh. Аутентификация SSH заботится о штрафе через ssh агент, но если я выполняю команду, которая требует sudo затем, подсказка пароля в моем терминале является простым текстом. Например:
ssh remotemachine "sudo -u www mkdir -p /path/to/new/folder"
предложит мне пароль в простом тексте. Кто-либо знает, как я могу заставить это использовать нормальную безопасную подсказку или что я могу передать пароль через переключатель? (поскольку затем я могу настроить безопасную подсказку на этой стороне, прежде чем я отправлю команду),
Любая справка очень ценится.
Использовать 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
файл).