неінтерактивна ssh sudo… запит на пароль у простому тексті


9

Я виконую кілька неінтерактивних команд ssh. Аутентифікація ssh береться за чудову функцію через агента ssh, але якщо я запускаю команду, яка вимагає sudo, то запит пароля в моєму терміналі - це звичайний текст. Наприклад:

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

підкаже мені пароль у простому тексті. Хтось знає, як я можу змусити його використовувати звичайний захищений запит або що я можу передати пароль через комутатор? (оскільки тоді я можу встановити захищений запит на цій стороні, перш ніж надсилати команду)

Будь-яка допомога дуже цінується.

Відповіді:


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файл).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.