Чи можливо передавати паролі на скрипті оболонки?


11

Я давно шукаю це, я хотів би знати, чи можна передавати паролі в сценарії оболонки? Багато відповідей відповіли «ні». Нещодавно я прочитав статтю, в якій говорилося, що як передавати паролі в сценарії оболонки. Я спробував це, але, здається, не виходить. Це посилання . Чи може хтось перевірити та повернути назад? Також, скажіть, будь ласка, чи є спосіб передавати паролі в сценарії оболонки? Якщо ні pls сказати мені, як Linux отримує введення пароля?

Відповіді:


12

Вводячи паролі, ви, ймовірно, маєте на увазі введення даних, не бачивши їх для користувача.

(запропоновано geirha) Під час використання bash, ви можете використовувати -sопцію, щоб запобігти відображенню введених символів:

read -p "Password please: " -s pass

Крім того, змініть поведінку терміналу, щоб приховати введені символи за допомогою stty -echo(відключити echo). Прочитавши пароль із вбудованою оболонкою у readзмінну (у наведеному нижче прикладі $pass), увімкніть її знову за допомогою stty echo. Оскільки новий рядок від Enterприховано до, ви повинні надрукувати новий рядок, щоб отримати майбутній вихід на новий рядок.

stty -echo
read -p "Password please: " pass
stty echo
printf '\n'

readі printfє вбудованими оболонками. sttyнадається coreutilsпакетом, який встановлено за замовчуванням. Це означає, що цей фрагмент дуже портативний.

Примітка: -pпараметр не стандартний, але з bash. Якщо вам потрібно відобразити підказку в інших оболонках, використовуйте:

printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'

Список літератури:


Я просто хочу дати сценарій кореневого пароля віддаленої системи. Чи це можливо у вашому випадку?
karthick87

@ karthick87: ні, цей скрипт просто інтерактивно фіксує дані, які користувач вводить. Якщо ви хочете вводити паролі root у сценарії, чому б вам не розглянути вхід на основі клавіш?
Лекенштейн

1
Читання Баша також має можливість вимкнути лунання під час читання в рядку. Див help '\read'.
geirha

У zshньому можна досягти через read -s 'pw?Prompt text', де pwє змінна, де буде розміщений пароль і -sє прапором для приховування введення.
лисини

2

Якій програмі ви хочете ввести пароль?

Сценарій за посиланням працює для мене. Зверніть увагу, що це не сценарій оболонки, а сценарій очікування (потрібен пакет, expectякий потрібно встановити`). Використання очікування є поширеним способом автоматизації текстових інтерактивних програм.

Неінтерактивні sshвходи часто проводяться за допомогою аутентифікації на основі ключа з порожньою парольною фразою.

Деякі інші програми (наприклад sudo) мають можливість прочитати пароль від stdin.

Надання пароля як опції командного рядка часто є проблемою безпеки, оскільки в більшості систем будь-який користувач може бачити будь-які інші користувацькі процеси, включаючи аргументи командного рядка, використовуючи прості інструменти, як-от ps.


Я просто хочу передати пароль на ssh програму.
karthick87

Тож можливо аутентифікація ключів працює для вас: Використовуйте ssh-keygenдля створення ключа автентифікації (просто натисніть Enter, коли просять пропустити фразу) та скопіюйте його віддаленому користувачеві за допомогою. ssh-copy-idЯкщо аутентифікація ключа включена для sshd (це за замовчуванням) не запитувати пароль.
Флоріан Дієш

1

Сценарій ніколи не повинен обробляти паролі. Запропонуйте, будь-який додаток потребує пароля, запитайте його про себе, або якщо це неможливо, знайдіть кращий спосіб автентифікації програми. Будь ласка, прочитайте http://mywiki.wooledge.org/BashFAQ/069


0

Існує спосіб зберігати паролі в bash-скрипті, але ви повинні зашифрувати скрипт, щоб ніхто насправді не міг його прочитати, або запустити на ньому будь-який тип налагоджувача, щоб точно побачити, що він робить. Щоб зашифрувати скрипт bash / shell та зробити його справді виконуваним, спробуйте скопіювати його та вставити тут

На вищезгаданій сторінці все, що вам потрібно зробити, - це надіслати свій сценарій (ви можете спочатку надіслати зразок сценарію для душевного спокою). Для вас буде створено поштовий файл. Клацніть правою кнопкою миші на посилання для завантаження та скопіюйте вказаний вами URL. Потім перейдіть до свого вікна UNIX і виконайте наступні дії.

Установка:

   wget link-to-the-zip-file
   unzip the-newly-downloaded-zip-file
   cd /tmp/KingLazySHIELD
   ./install.sh  /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username)  -force 

Що вищезгадана команда встановлення зробить для вас:

  1. Він встановить зашифрований скрипт у каталог /var/tmp/KINGLAZY/SHIELDX-(your-script-name).

  2. Він розмістить посилання на цей зашифрований скрипт у той каталог, який ви вказали в заміну /home/(your-username)- таким чином, ви зможете легко отримати доступ до сценарію, не вводячи абсолютний шлях.

  3. Забезпечує, що НІхто НЕ може змінити сценарій - Будь-які спроби змінити зашифрований скрипт приведуть його в непридатність ... до тих пір, поки ці спроби не будуть припинені або усунені.

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

ПРИМІТКА:

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


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