Как использовать зашифрованные пароли в Bash скрипты

Jun 30, 2025
Linux,
Fatmawati Achmad Zaenuri / ShuttTerstick.com

Если вы вынуждены использовать скрипт Linux для подключения к защищенному паролем ресурса, вы, вероятно, чувствуете себя непростым о положении этого пароля в сценарии. OpenSSL решает эту проблему для вас.

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

Это не отличная идея, чтобы поставить пароли в сценариях оболочки. На самом деле, это действительно плохое представление. Если сценарий попадает в неправильные руки, каждый, кто читает, он может видеть, что есть пароль. Но если вы вынуждены использовать сценарий, что еще вы можете сделать?

Вы можете ввести пароль вручную, когда процесс достигнет этой точки, но если сценарий будет работать без присмотра, это не будет работать. К счастью, есть альтернатива жестким кодированию паролей в скрипт. Неудивительно, он использует другой пароль для достижения этого, а также некоторое сильное шифрование.

В нашем примере сценарий нам нужно сделать удаленный подключение к компьютеру Fedora Linux с нашего компьютера Ubuntu. Мы будем использовать скрипт Shell Bash, чтобы сделать SSH-соединение на компьютер Fedora. Сценарий должен работать без присмотра, и мы не хотим поместить пароль для удаленной учетной записи в сценарии. Мы не можем использовать SSH-ключей в этом случае, потому что мы притворяем вид, что у нас нет никаких прав или прав администратора над компьютером Fedora.

Мы собираемся использовать известный OpenSSL Toolkit. Для обработки шифрования и утилиты называется SSHPASS. Чтобы накормить пароль в команду ssh.

СВЯЗАННЫЕ С: Как создать и установить клавиши SSH из раковины Linux

Установка OpenSSL и SSHPASS

Поскольку многие другие инструменты шифрования и безопасности используют OpenSSL, он может быть уже установлен на вашем компьютере. Тем не менее, если это не так, это займет только момент для установки.

На Ubuntu введите эту команду:

 Sudo APT Получить OpenSSL 

Установить SSHPASS. Используйте эту команду:

 Sudo APT Установите SSHPASS 

На Fedora вам нужно напечатать:

 Sudo DNF Установка OpenSSL 

Команда для установки SSHPASS. является:

 Sudo DNF Установите SSHPASP 

На Manjaro Linux мы можем установить OpenSSL с помощью:

 Sudo Pacman -си OpenSSL 

Наконец, установить SSHPASS. Используйте эту команду:

 sudo pacman -sy ssshpass 

Шифрование в командной строке

Прежде чем мы воспользуемся использованием openssl Команда с скриптами, давайте познакомимся с этим, используя его в командной строке. Скажем, что пароль для учетной записи на удаленном компьютере Ржавый! Herrding.pitshaft Отказ Мы собираемся шифровать этот пароль, используя openssl Отказ

Нам нужно предоставить пароль шифрования, когда мы делаем. Пароль шифрования используется в процессах шифрования и дешифрования. Есть много параметров и вариантов в openssl команда. Мы посмотрим на каждого из них через минуту.

 Эхо ржавый! Herrd.pitshaft '| OpenSSL ENG -AES-256-CBC -MD SHA512 -A -PBKDF2 -iter 100000 -Salt-Pass Pass: 'Pick.your.Password' 

Мы используем эхо отправить пароль удаленной учетной записи через трубу и в openssl команда.

То openssl Параметры:

  • ENG-AES-256-CBC : Тип кодирования. Мы используем Расширенный стандарт шифрования 256-битный ключ шифра с зашифрованным цепочкой.
  • -МД ША512. : Тип дайджеста сообщения (HASH). Мы используем криптографический алгоритм SHA512.
  • - : Это говорит openssl Чтобы нанести базовую кодировку базы-64 после фазы шифрования и перед фазой дешифрования.
  • -PBKDF2. : Использование функции 2 ключевой деривации на основе паролей (PBKDF2) делает его намного сложнее для атаки грубой силы, чтобы добиться успеха в угадании вашего пароля. PBKDF2 требует много вычислений для выполнения шифрования. Злоумышленник должен будет повторить все эти вычисления.
  • -iter 100000. : Устанавливает количество вычислений, которые будут использовать PBKDF2.
  • -поваренная соль : Использование случайно нанесенного значения соли делает зашифрованный выход разным каждый раз, даже если простой текст одинаков.
  • - проход: 'pick.your.password' : Пароль, который нам нужно будет использовать для расшифровки зашифрованного удаленного пароля. Заменять Pick.your.Password с надежным паролем вашего выбора.

Зашифрованная версия нашего Ржавый! Herrding.pitshaft Пароль записывается в окно терминала.

Чтобы расшифровать это, нам нужно передать эту зашифрованную строку в openssl с теми же параметрами, которые мы использовали для шифрования, но добавления в потрясающий (расшифровать) вариант.

 ECHO U2FSDGVKX19IIIRNHESG + WM / UKJTZJWNYOPJZPHYRDKYZH5LVZRPIGO1S0GOZU46 | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -ITER 100000 -Salt -Pass Pass: 'Pick.your.Password' 

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

Это доказывает, что мы можем надежно зашифровать наш пароль удаленной учетной записи пользователя. Мы также можем расшифровать его, когда нам нужно, используя пароль, который мы предоставили в этапе шифрования.

Но действительно ли это улучшает нашу ситуацию? Если нам нужен пароль шифрования, чтобы расшифровать пароль удаленной учетной записи, конечно, пароль дешифрования должен быть в скрипте? Ну да, это делает. Но пароль зашифрованного удаленного учетной записи пользователя будет сохранен в другом, скрытом файле. Разрешения на файл предотвратит кому-либо, кроме того, что root пользователь системы, очевидно, - от доступа к нему.

Чтобы отправить вывод из команды шифрования в файл, мы можем использовать перенаправление. Файл называется ".secret_vault.txt." Мы изменили пароль шифрования на что-то более надежное.

 Эхо ржавый! Herrd.pitshaft '| OpenSSL ENC-AES-256-CBC -MD SHA512 -A -PBKDF2 -ITER 100000 -Salt-Pass Pass: «Секрет # Vault! Password» & GT; .secret_vault.txt 

Ничто не видно, но пароль зашифрован и отправляется в файл ".secret_vault.txt".

Мы можем проверить, что он работал, расшифровывая пароль в скрытом файле. Обратите внимание, что мы используем Кот Здесь нет эхо Отказ

 CAT .secret_vault.txt | OpenSSL ENC -AES-256-CBC -MD SHA512 -A -D -PBKDF2 -ITER 100000 -Salt-Pass Pass: «Секрет # Vault! Password» 

Пароль успешно расшифрован из данных в файле. Хорошо использовать камин Чтобы изменить разрешения на этот файл, чтобы никто еще не мог получить доступ к нему.

 Chmod 600 .secret_vault.txt 
 ls -l .secret_vault.txt 

Использование маски разрешений 600 удаляет весь доступ для всех, кроме владельца файла. Теперь мы можем двигаться дальше, чтобы написать наш скрипт.

СВЯЗАННЫЕ С: Как использовать команду chmod на linux

Использование OpenSSL в сценарии

Наш скрипт довольно прост:

 #! / Bin / Bash

# Название удаленной учетной записи
Remote_user = Geek.

# Пароль для удаленной учетной записи
Detment_passwd = $ (cat .secret_vault.txt | openssl ence-aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass: «Секрет # Vault! Password»)

# Удаленный компьютер
Remote_Linux = Fedora-34.Local

# Подключитесь к удаленному компьютеру и поместите временную метку в файл под названием Script.log
sshpass -p $ detment_passwd ssh -t $ demote_user @ $ demote_linux & lt; _remote_commands.
echo $ user "-" $ (дата) & gt; & gt; /home/$Remote_user/script.log
_remote_Commands 
  • Мы устанавливаем переменную под названием Remote_User. «Гик».
  • Затем мы установили переменную под названием Remote_Passwd. К цене дешифрованного пароля, вытянутого из файла «.secret_vault.txt», используя ту же команду, которую мы использовали минуту назад.
  • Расположение удаленного компьютера хранится в переменной вызов Remote_linux. Отказ

С этой информацией мы можем использовать SSH. Команда для подключения к удаленному компьютеру.

  • То SSHPASS. Команда - первая команда на линии подключения. Мы используем это с -п (пароль) опция. Это позволяет нам указать пароль, который должен быть отправлен на SSH. команда.
  • Мы используем -Та (отключить опцию ассигнования псевдо терминала) с SSH. Потому что нам не нужно иметь псевдотвору, выделенную нам на удаленный компьютер.

Мы используем короткий Здесь документ Передать команду на удаленный компьютер. Все между двумя _remote_commands. Строки отправляются в качестве инструкции для пользовательской сессии на удаленном компьютере-в этом случае, это одна строка скрипта Bash.

Команда, отправленная на удаленный компьютер, просто регистрирует имя учетной записи пользователя и Timestamp в файл, называемый «Script.log».

Скопируйте и вставьте скрипт в редактор и сохраните его в файл, называемый «Go-remote.sh». Не забудьте изменить детали, чтобы отразить адрес вашего собственного удаленного компьютера, удаленной учетной записи пользователя и пароль удаленного учетной записи.

Использовать камин Чтобы сделать исполняемый сценарий.

 chmod + x go-remote.sh 

Все, что осталось, это попробовать. Давайте выстрелить наш сценарий.

 ./ go-remote.sh 

Поскольку наш скрипт - это минималистский шаблон для без присмотра сценариев, на терминал нет вывода. Но если мы проверим файл «Script.log» на компьютере Fedora, мы видим, что удаленные подключения были успешно сделаны, и что файл «Script.log» был обновлен с Timestamps.

 Script Cat.log 

Ваш пароль является частным

Ваш пароль удаленной учетной записи не записывается в сценарии.

И хотя пароль дешифрования является, В скрипте никто не может получить доступ к файлу «.secret_vault.txt», чтобы расшифровать его и получить пароль удаленной учетной записи.


Linux, - Самые популярные статьи

Как найти и удалять сломанные симлиты на Linux

Linux, Nov 12, 2025

Fatmawati Achmad Zaenuri / Shutterstock Символические ссылки на Linux являются фантастической особенност..


Как скрыть все значки рабочего стола на Mac

Linux, Jun 23, 2025

Крисда / Shutterstock Ваш Mac Desktop беспорядок? Не хочу все организовать? Не волнуйтесь, вы может�..


5 Специализированные Linux дистрибутивов с уникальными свойствами

Linux, Jul 20, 2025

Чтение сквозь мультяшный длинный список существующих дистрибунов Linux, вкусы Saupdry и выключенные стрель�..


Нативные игры на Linux могут умирать, и это нормально

Linux, Sep 27, 2025

DC Studio / ShuttTerstick.com То Паровая палуба Анонсирован в августе 2021 года, имеет игровые к�..


Что нового в GNOME 41?

Linux, Sep 16, 2025

Среда на рабочем столе Linux. ГНОМ 41 было выпущено 22 сентября 2021 года. Приближается горячим на кабл..


Что нового в ядре Linux 5.14

Linux, Sep 9, 2025

Шон Локка Фотография / ShutterStock Поскольку Linux исполняется 30 лет, ядро ​​5.14 было выпущено...


Как выключить компьютер Ubuntu

Linux, Oct 12, 2025

Как и все персональные компьютеры, компьютер работает Ubuntu Операционная система настольных комп�..


10 полезных примеров команды Linux rsync

Linux, Oct 24, 2025

Linux rsync Команда - это мощный инструмент копирования и синхронизации папок. Вот десять общих случаев �..


Категории