9

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

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

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

Буду признателен за любую оказанную помощь.

1 ответ1

13

Используйте ssh -t:

человек сш

-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:

человек судо

-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 это будет файл ~/.bash_history ).

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