Si consiglia sempre di utilizzare password crittografate negli script della shell bash di Linux. In genere, nello script della shell bash potremmo aver bisogno della password per l'utente remoto durante la connessione al sistema remoto, all'utente ftp e all'utente proxy ecc. In questo articolo, tratteremo come crittografare la password usando il comando openssl e quindi vedremo come questa password crittografata può essere utilizzato nello script della shell bash.
Crittografa la password utilizzando Openssl
Supponiamo di voler connetterci al sistema remoto su ssh usando la password all'interno di uno script di shell. Per crittografare una password, usa il comando openssl di seguito nel tuo sistema Linux.
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]#
Nota: Stringa seguita dal comando echo "[email protected]#2" è la stringa della password che vogliamo crittografare e "[email protected]#" è la password utilizzata durante la crittografia. Se la versione di openssl è 1.1.0 o inferiore, salta queste due opzioni '-pbkdf2 -iter 100000'
Per salvare la password crittografata in un file, utilizzare il comando seguente,
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# > secret.txt
Imposta le seguenti autorizzazioni sul file secret.txt usando il comando chmod,
$ chmod 600 secret.txt
Decrittografa la password crittografata utilizzando Openssl
Per decrittografare la password, esegui sotto
$ cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# [email protected]#2 $
Nota: Se hai notato attentamente, abbiamo utilizzato l'opzione '-d' per decrittografare.
Usa password crittografata nello script Bash Shell
Utilizzare lo script di shell di esempio riportato di seguito che utilizzerà la password crittografata durante la connessione al sistema remoto tramite 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:[email protected]#` REMOTE=10.20.0.20 sshpass -p $PASSWD ssh -o StrictHostKeyChecking=no [email protected]$REMOTE \ 'dmesg -Tx | grep -i error' > /tmp/a.tmp
salva e chiudi il file.
Rendi lo script eseguibile eseguendo sotto comando,
$ chmod +x sample.sh
Ora esegui lo script per verificare se la crittografia è stata utilizzata correttamente per la connessione al sistema remoto.
[[email protected] ~]$ ./sample.sh Or [[email protected] ~]$ bash -x sample.sh + USERNAME=devops ++ openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt \ -pass pass:[email protected]# ++ cat secret.txt + [email protected]#2 + REMOTE=10.20.0.20 + sshpass -p [email protected]#2 ssh -o StrictHostKeyChecking=no [email protected] \ 'dmesg -Tx | grep -i error'
Perfetto, l'output sopra conferma che la crittografia viene decifrata durante l'esecuzione.
Verifichiamo il contenuto del file /tmp/a.tmp,
[[email protected] ~]$ 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 [[email protected] ~]$
L'output sopra conferma che lo script è in grado di acquisire l'output del comando dmesg. Questo è tutto dall'articolo. Spero che tu abbia un'idea di come possiamo usare la password crittografata all'interno di uno script di shell.