Как использовать зашифрованный пароль в сценарии Linux Bash Shell
В сценариях оболочки Linux bash всегда рекомендуется использовать зашифрованные пароли. Как правило, в сценарии оболочки bash нам может потребоваться пароль для удаленного пользователя при подключении к удаленной системе, пользователя ftp и пользователя прокси и т. Д. В этой статье мы расскажем, как зашифровать пароль с помощью команды openssl, а затем увидим, как этот зашифрованный пароль может быть используется в сценарии оболочки bash.
Шифровать пароль с помощью Openssl
Предположим, мы хотим подключиться к удаленной системе через ssh, используя пароль внутри сценария оболочки. Чтобы зашифровать пароль, используйте следующую команду openssl в вашей системе Linux.
$ echo "Passw0rD@#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:Secret@123#
Примечание. Строка, за которой следует эхо-команда « Passw0rD @ # 2 » — это строка пароля, которую мы хотим зашифровать, а « Secret @ 123 # » — это пароль, который используется во время шифрования. Если версия openssl — 1.1.0 или меньше, пропустите эти два параметра ‘ -pbkdf2 -iter 100000 ‘
Чтобы сохранить зашифрованный пароль в файл, используйте следующую команду:
$ echo "Passw0rD@#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:Secret@123# > secret.txt
Установите следующие разрешения для файла secret.txt с помощью команды chmod ,
$ chmod 600 secret.txt
Расшифровать зашифрованный пароль с помощью Openssl
Чтобы расшифровать пароль, запустите ниже
$ cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 \ -salt -pass pass:Secret@123# Passw0rD@#2 $
Note: If you have noticed carefully, we have used ‘-d’ option to decrypt.
Примечание. Если вы внимательно заметили, мы использовали опцию «-d» для расшифровки.
Использование зашифрованного пароля в сценарии оболочки Bash
Используйте приведенный ниже пример сценария оболочки, который будет использовать зашифрованный пароль при подключении к удаленной системе через ssh.
$ vi sample.sh #!/bin/bash USERNAME=devops PASSWD=`cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 \ -iter 100000 -salt -pass pass:Secret@123#` REMOTE=10.20.0.20 sshpass -p $PASSWD ssh -o StrictHostKeyChecking=no $USERNAME@$REMOTE \ 'dmesg -Tx | grep -i error' > /tmp/a.tmp
Сохраните и закройте файл.
Сделайте скрипт исполняемым, выполнив команду под командой,
$ chmod +x sample.sh
Теперь запустите сценарий, чтобы проверить, успешно ли используется шифрование для подключения к удаленной системе.
[root@infoit.com.ua ~]$ ./sample.sh Or [root@infoit.com.ua ~]$ bash -x sample.sh + USERNAME=devops ++ openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt \ -pass pass:Secret@123# ++ cat secret.txt + PASSWD=Passw0rD@#2 + REMOTE=10.20.0.20 + sshpass -p Passw0rD@#2 ssh -o StrictHostKeyChecking=no devops@10.20.0.20 \ 'dmesg -Tx | grep -i error'
Отлично, приведенный выше вывод подтверждает, что зашифрованный код расшифровывается во время выполнения.
Проверим содержимое файла /tmp/a.tmp,
[root@infoit.com.ua ~]$ cat /tmp/a.tmp kern :info : [Thu Jun 3 13:36:51 2021] RAS: Correctable Errors collector\ initialized. kern :err : [Thu Jun 3 13:36:53 2021] [drm:vmw_host_log [vmwgfx]] *ERROR*\ Failed to send log kern :err : [Thu Jun 3 13:36:53 2021] [drm:vmw_host_log [vmwgfx]] *ERROR* \ Failed to send log [root@infoit.com.ua ~]$
Приведенные выше выходные данные подтверждают, что сценарий может захватывать выходные данные команды dmesg. Это все из статьи. Надеюсь, вы получили представление о том, как можно использовать зашифрованный пароль внутри сценария оболочки