Як використовувати пароль від змінної середовища в команді Linux?


0

Я хочу запустити команду нижче в сценарії (означає, що я не можу запускати інтерактивно в терміналі, і тому можу ввести пароль при появі запиту):

ssh -o StrictHostKeyChecking = немає користувача@example.com 'ехо-мій пароль | статус sudo -kS ufw

'

це сш в віддалений хост і запустить стан команди ufw на віддаленому хості.

Команда працює чудово, але мені потрібно мати можливість посилатися на "пароль" із змінної середовища з ім'ям

SSHPASS = мій слово

який зберігає пароль, щоб не виставляти пароль у команді. Як це зробити?


1
серйозно ?? використовувати ключі ssh.
OmPS

Вже сказано в деяких відповідях, але безпечніше використовувати автентифікацію на основі ключів SSH ( digitalocean.com/community/tutorials/… ).
Martijn Gastkemper

Відповіді:


3

Ви можете передати змінну, що містить пароль, за sshдопомогою sshpassкоманди:

sshpass -p "$SSHPASS" ssh -o StrictHostKeyChecking=no user@example.com

Однак це не набагато безпечніше, ніж наявність пароля в сценарії!

Кращим рішенням, коли вам потрібно отримати доступ до серверів за допомогою sshскриптів, буде перехід до аутентифікації на основі ключів .


навіть якщо ключ auth на основі ключа, все-таки вимагатиме запрошення пароля під час виконання команди як sudo на віддаленому хості.
user61766

@ user61766 вірно, але sudo може бути налаштований не вимагати пароля для певних команд для певних користувачів. Ви можете налаштувати на віддаленому сервері (-ів) спеціального користувача для цих завдань з автоматизації за допомогою клавіш ssh та ad-hoc- sudoконфігурації.
Містер Шунц

Може, що, як << $pass << tty?
пібі

0

Кращим способом досягти цього було б встановити ключ SSH для кореневого користувача у віддаленій системі, який має обмеження викликати "статус ufw".

Сказавши, що, якщо я розумію, що ви намагаєтеся зробити, вам просто потрібно надати пароль sudoпрограмі. Для цього будь-яке з цих дій має працювати:

echo "$PASSWORD" | ssh -o ... user@example.com 'sudo -kS ufw status'

ssh -o ... user@example.com "echo $PASSWORD | sudo -kS ufw status"

Основна відмінність між ними полягає в тому, що перша версія працює echoна локальній системі, тоді як друга версія працює echoна віддаленій системі. Запуск команди з паролем в якості одного з аргументів його командного рядка має можливість зробити пароль видимим для інших користувачів. Працюючи echoна одному або іншому хості, ви робите пароль видимим для іншої групи користувачів.

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