Як використовувати зашифровані паролі в Bash скрипти

Jun 30, 2025
Linux,
Фатмаваті Ахмад zaenuri / Shutterstock.com

Якщо ви змушені використовувати сценарій Linux для підключення до захищених паролем ресурсу, ви, ймовірно, відчуваєте незручність покласти, що пароль в скрипті. OpenSSL вирішує цю проблему для вас.

Паролі та скрипти

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

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

У нашому прикладі, ми повинні зробити віддалене підключення до комп'ютера Fedora Linux з нашим Ubuntu комп'ютера. Ми будемо використовувати скрипт Bash оболонки, щоб зробити з'єднання SSH до комп'ютера Fedora. Скрипт повинен працювати без нагляду, і ми не хочемо, щоб поставити пароль для віддаленого аккаунта в скрипті. Ми не можемо використовувати ключі SSH в цьому випадку, тому що ми вдаємо, що ми не маємо ніякого контролю або права адміністратора над комп'ютером Fedora.

Ми збираємося використовувати добре відомий OpenSSL інструментарій для обробки шифрування і утиліти sshpass годувати пароль в команду SSH.

Пов'язані: Як створити і встановити SSH ключі від Linux Shell

Установка OpenSSL і sshpass

Оскільки багато інших інструментів шифрування і безпеки використання OpenSSL, він вже може бути встановлений на вашому комп'ютері. Однак, якщо це не так, це займе всього хвилину, щоб встановити.

В Ubuntu, введіть наступну команду:

 Судо схильний прибуде OpenSSL 

Для того, щоб встановити sshpass , Використовуйте наступну команду:

 Sudo APT встановити sshpass 

У Fedora, вам потрібно ввести:

 Sudo д.н.ф. встановити OpenSSL 

Команда для установки sshpass є:

 Sudo д.н.ф. встановити sshpass 

На Manjaro Linux, ми можемо встановити OpenSSL з:

 Sudo pacman -Sy OpenSSL 

І, нарешті, встановити sshpass , Використовуйте наступну команду:

 Sudo pacman -Sy sshpass 

Шифрування в командному рядку

Перед тим, як потрапити у використанні OpenSSL Команда за допомогою скриптів, давайте знайомитися з ним, використовуючи його в командному рядку. Давайте скажемо, що пароль для облікового запису на віддаленому комп'ютері іржавий! herring.pitshaft . Ми будемо шифрувати цей пароль за допомогою OpenSSL .

Ми повинні надати пароль шифрування, коли ми робимо. Пароль шифрування використовується в процесах шифрування і дешифрування. Є багато параметрів і опцій в OpenSSL Команда. Ми будемо дивитися на кожен з них в даний момент.

 відлуння 'іржавий herring.pitshaft!' | OpenSSL ENC -AES-256-CBC -md SHA512 -a -pbkdf2 -iter 100000 -salt -Пасс прохід: 'pick.your.password' 

ми використовуємо ехо Для відправки пароля віддаленого рахунку через трубу і в OpenSSL Команда.

Точний OpenSSL параметри:

  • ENC -AES-256-CBC : Тип кодування. ми використовуємо Advanced Encryption Standard 256-бітний ключ шифрування з шифром-ланцюжком блоків.
  • -md sha512 : Повідомлення перетравлювати тип (хеш). Ми використовуємо криптографічний алгоритм SHA512.
  • -a : Це говорить OpenSSL застосовувати базові 64 кодування після фази шифрування і перед фазою дешифрування.
  • -pbkdf2 Використання пароля-ключ дифференцией Функція 2 (PBKDF2) робить його набагато більш важким для грубої сили атаки, щоб досягти успіху в вгадати ваш пароль. PBKDF2 вимагає багато обчислень для виконання шифрування. Зловмисник повинен повторити всі ці обчислення.
  • -iter 100000 : Встановлює кількість обчислень, які PBKDF2 буде використовувати.
  • -salt Використання випадково прикладне значення солі робить зашифрованого видавати різні кожен раз, навіть якщо звичайний текст такий же.
  • -pass прохід: »pick.your.password» : Пароль ми повинні використовувати, щоб розшифрувати зашифрований пароль віддаленого. сурогат pick.your.password з надійним паролем за вашим вибором.

Зашифровані версія нашого іржавий! herring.pitshaft пароль записується у вікні терміналу.

Для того, щоб розшифрувати це, ми повинні передати цю зашифровану рядок в OpenSSL з тими ж параметрами, які ми використовували для шифрування, але додавання в -d (Розшифровувати) варіант.

 відлуння U2FsdGVkX19iiiRNhEsG + WM / uKjtZJwnYOpjzPhyrDKYZH5lVZrpIgo1S0goZU46 | OpenSSL ENC -AES-256-CBC -md SHA512 -a -d -pbkdf2 -iter 100000 -salt -Пасс прохід: 'pick.your.password' 

Рядок розшифрована, і наш оригінальний текстовий пароль для віддаленого користувача аккаунта записуються в вікно терміналу.

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

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

Для того, щоб відправити висновок команди шифрування в файл, ми можемо використовувати перенаправлення. Файл називається «.secret_vault.txt.» Ми змінили пароль шифрування на щось більш надійне.

 відлуння 'іржавий herring.pitshaft!' | OpenSSL дод -AES-256-CBC -md sha512 -a -pbkdf2 -iter 100000 -salt -Пасс прохід: '! Секрет # сховище паролів' & GT; .secret_vault.txt 

Нічого видно не відбувається, але пароль шифрується і відправляється в файл «.secret_vault.txt».

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

 кішка .secret_vault.t | OpenSSL дод -AES-256-CBC -md sha512 -a -d -pbkdf2 -iter 100000 -salt -Пасс прохід: '! Секрет # сховище паролів' 

Пароль успішно розшифрований з даних в файлі. Добре використання хмод змінити права на цей файл, так що ніхто не може отримати до нього доступ.

 CHMOD 600 .secret_vault.txt 
 -l Ls .secret_vault.txt 

Використання дозволів, маска 600 видаляє всі доступи для тих, хто, крім власника файлу. Тепер ми можемо перейти до написання нашого сценарію.

Пов'язані: Як використовувати CHMOD команди на Linux

Використання OpenSSL в Script

Наш сценарій досить простий:

 #! / Bin / Баш

# Ім'я віддаленого аккаунта
REMOTE_USER = виродок

# Пароль для віддаленого аккаунта
REMOTE_PASSWD = $ (кішка .secret_vault.t | OpenSSL дод -AES-256-CBC -md sha512 -a -d -pbkdf2 -iter 100000 -salt -Пасс прохід: '! Секрет # сховища паролів')

# Віддалений комп'ютер
REMOTE_LINUX = Fedora-34.local

# Підключення до віддаленого комп'ютера і поставити мітку в файл з ім'ям script.log
sshpass -p $ REMOTE_PASSWD SSH -T $ REMOTE_USER @ $ REMOTE_LINUX & л; & л; _remote_commands
Відлуння $ USER "-" $ (дата) & GT; & GT; /home/$REMOTE_USER/script.log
_remote_commands 
  • Ми встановлюємо змінну REMOTE_USER до «виродок».
  • Потім ми встановлюємо змінну REMOTE_PASSWD до значення розшифрованого пароля витягли з файлу «.secret_vault.txt», використовуючи ту ж саму команду, яку ми використовували хвилину назад.
  • Розташування віддаленого комп'ютера зберігається в змінної з ім'ям REMOTE_LINUX .

З цією інформацією, ми можемо використовувати SSH Команда для підключення до віддаленого комп'ютера.

  • Точний sshpass команда є першою командою на сполучної лінії. Ми використовуємо його з -п (Пароль) опції. Це дозволяє нам вказати пароль, який слід надіслати до сша Команда.
  • Ми використовуємо (Вимкнути виділення псевдо-терміналів) сша Тому що нам не потрібно мати псевдо-ТИТ, виділений нам на віддаленому комп'ютері.

Ми використовуємо короткий Тут документ Щоб пройти команду до віддаленого комп'ютера. Все між двома _remote_commands Струни надсилаються як інструкції для сеансу користувача на віддаленому комп'ютері, в цьому випадку це єдина лінія скрипту Bash.

Команда, надіслана на віддалений Комп'ютер, просто реєструє ім'я облікового запису користувача та тимчасове значення файлу під назвою "script.log".

Скопіюйте та вставте скрипт у редактор і збережіть його до файлу під назвою "go-remote.sh". Не забудьте змінити деталі, щоб відобразити адресу власного віддаленого комп'ютера, віддаленого облікового запису користувача та пароль віддаленого облікового запису.

Використання хмод зробити виконуваний скрипт.

 chmod + x go-remote.sh 

Все, що залишилося, - це спробувати. Давайте пожежу наш сценарій.

 ./ go-remote.sh 

Оскільки наш сценарій - це мінімалістський шаблон для сценарію без нагляду, немає випуску до терміналу. Але якщо ми перевіримо файл "script.log" на комп'ютері fedora, ми бачимо, що віддалені з'єднання були успішно зроблені, а файл "script.log" був оновлений за допомогою timestamps.

 Cat Script.Log 

Ваш пароль є приватним

Ваш пароль віддаленого рахунку не записується в скрипті.

І хоча пароль розшифровка є, У сценарію, ніхто інший не може отримати доступ до вашого файлу ".secret_vault.txt", щоб розшифрувати його та отримати пароль віддаленого облікового запису.


Linux, - Найпопулярніші статті

Що таке Bash Словники на Linux, і як ви їх використовуєте?

Linux, Jun 16, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com Bash словники дають вам хеш-карту і асоціативні масиви в скрипт�..


What Is “root” on Linux?

Linux, Jul 7, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com Коректний користувач є найпотужнішим суб'єктом у Всесвіті Linux..


How to Roll Back the Kernel in Linux

Linux, Sep 30, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com Якщо ваш Linux PC раптом має проблеми після оновлення до вашої си�..


Що нового в ядрі Linux 5.14

Linux, Sep 9, 2025

Шон Лок Фотографія / Shutterstock Як Linux виповнюється 30 років, ядро ​​5,14 було звільнено. Вона ..


Як перелічити змінні середовища на Linux

Linux, Oct 31, 2025

У Linux змінні середовища мають важливі значення та налаштування. Сценарії, програми та оболонки читають ці..


7 помилок нові користувачі Linux (і як їх уникнути)

Linux, Nov 11, 2024

Вивчення Linux може бути розчаровуючим досвідом, коли все маленька річ відчуває себе битвою. Уникнення цих �..


10 Корисні приклади команди Linux rsync

Linux, Oct 24, 2025

Linux rsync Команда - це потужний інструмент копіювання файлів та синхронізацію папки. Ось десять пошире..


Як отримати свій публічний IP у сценарії Linux Bash

Linux, Nov 9, 2024

Вам знадобиться зовнішня IP -адреса, якщо ви хочете віддалено підключитися до комп’ютера. Знайти його вру�..


Категорії