Сценарии Bash — важная часть работы системного администратора. Они позволяют автоматизировать как рутинные, так и критически важные задачи.

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

Создание простого скрипта

Предположим, вы хотите создать простой сценарий, который создает резервную копию вашей домашней папки Linux в удаленном месте, чтобы вы могли легко восстановить свои данные в случае потери данных.

Начните с создания файла сценария Bash в вашей домашней папке, с помощью сенсорной команды или любой другой метод и назовите его backup_home.sh. Не стесняйтесь использовать любое имя и каталог по своему вкусу.

В сценарии используется rsync Команда, мощный инструмент для копирования файлов, для резервного копирования всех файлов в вашем локальном домашнем каталоге на удаленный сервер.

instagram viewer

Скопируйте содержимое следующего сценария и вставьте его в свой файл Bash. Не забудьте заменить пользователя john на правильное имя локального домашнего пользователя. Также укажите правильное имя пользователя и IP-адрес для удаленного сервера.

#!/бин/баш
#Копировать данные на удаленный сервер
rsync -avl --mkpath /home/john user_name@удаленный_сервер/дом/Резервное копирование

Если у вас нет удаленного сервера для тестирования, вы можете просто установить VirtualBox и настроить виртуальную машину на вашей локальной машине. Используйте гостевую виртуальную машину в качестве удаленного сервера.

Сохраните файл. Чтобы выполнить скрипт, вам необходимо предоставить ему разрешение на выполнение с помощью команды судо чмод 755. Все пользователи могут выполнять скрипт, но только пользователи sudo могут изменять файл.

Наконец, выполните скрипт Bash из терминала с помощью команды:

./backup_home.sh

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

Автоматический вход по паролю

Установить sshpass, неинтерактивный провайдер паролей, на вашем локальном ПК или ПК, с которого вы будете запускать скрипт.

В дистрибутивах на основе Debian

Если вы используете дистрибутив на базе Debian, такой как Ubuntu, Pop!_OS и Lubuntu:

Судо подходит обновлять && судо способно установить sshpass

На RHEL и Fedora

днф установить sshpass

После установки sshpass измените скрипт так, чтобы он выглядел следующим образом.

#!/бин/баш
#Копировать данные на удаленный сервер
sshpass-p "ваш пароль" rsync -avl --mkpath /home/john user_name@remote_server/home/Backup

Здесь вы указываете пароль в виде обычного текста. Очевидно, что это не идеальный способ, поскольку он небезопасен и не является хорошей практикой. Если сценарий когда-нибудь попадет не в те руки, у вас большие проблемы.

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

Шифрование вашего пароля

GnuPG установлен по умолчанию в большинстве систем Linux, но если он не установлен в вашей системе, вот как установить GnuPG.

Создайте скрытый файл с именем секреты используя команду сенсорный .секреты. Поскольку мы сделали файл скрытым по умолчанию в качестве дополнительной меры безопасности, вот как вы можете просмотреть скрытые файлы в Linux.

В файле секретов введите пароль удаленного ПК и сохраните его.

Затем зашифруйте файл с помощью gpg команда.

судоgpg.секреты

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

GnuPG создаст новый файл с расширением .gpg добавляется к старому имени файла. Теперь ваше новое имя файла должно быть секреты.gpg, если вы использовали секреты имя файла.

Если вы просматриваете содержимое secrets.gpg с помощью кот команда, вам будет представлен какой-то тарабарский текст, показывающий, что ваш пароль зашифрован.

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

gpg-dqсекрет.gpg

Использование зашифрованного пароля в вашем скрипте

Чтобы использовать зашифрованный пароль в сценарии, обновите сценарий следующим образом:

#!/бин/баш
#Копировать данные на удаленный сервер
gpg -dq секреты.gpg | sshpass rsync -avl --mkpath /home/john user_name@удаленный_сервер/дом/Резервное копирование

Запустите сценарии резервного копирования еще раз, и на этот раз вам не будет предложено ввести пароль.

Автоматизируйте задачи с помощью сценариев Bash

GnuGP часто используется для защиты конфиденциальных файлов и данных на вашем ПК, а также является отличным инструментом для защиты паролей в автоматических сценариях Bash в Linux.

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