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

Как использовать зашифрованный пароль в сценарии 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. Это все из статьи. Надеюсь, вы получили представление о том, как можно использовать зашифрованный пароль внутри сценария оболочки