Как использовать зашифрованные пароли в 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, 2024

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


Как использовать ограниченную оболочку, чтобы ограничить, что может сделать пользователь Linux

Linux, Mar 25, 2025

Fatmawati Achmad Zaenuri / Shutterstock Ограниченная оболочка ограничивает то, что может сделать учетн�..


Как откатить ядро ​​в Linux

Linux, Sep 30, 2025

Fatmawati Achmad Zaenuri / ShuttTerstick.com Если ваш ПК Linux внезапно возникнет проблемы после обновления ..


Linux исполняется 30: Как проект хобби завоевал мир

Linux, Sep 17, 2025

Ларри Эвин и Gimp На 17 сентября 1991 Linus Torvalds выпустил ядро ​​Linux (версия 0,01) впервые. �..


Можете ли вы установить Linux на M1 Apple Silicon Mac?

Linux, Nov 12, 2024

Не все покупают Mac, чтобы исключительно запустить MacO. Плохая новость заключается в том, что по состоян�..


Как убить процесс Linux по номеру порта

Linux, Oct 4, 2025

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


Как найти PID процесса Linux с Pidof или PGREP

Linux, Nov 15, 2024

Работа с процессом Linux часто означает знание его идентификатора процесса или PID. Это уникальное число, дан..


Как иметь дело с пробелами в именах файлов на Linux

Linux, Dec 14, 2024

Как и большинство операционных систем, Linux поддерживает имена файлов с пробелами в них. Но использование �..


Категории