Cómo usar una contraseña cifrada en Linux Bash Shell Script

Siempre se recomienda utilizar contraseñas cifradas en los scripts de shell bash de Linux. Por lo general, en el script bash shell es posible que necesitemos una contraseña para el usuario remoto mientras nos conectamos al sistema remoto, al usuario ftp y al usuario proxy, etc. En este artículo, cubriremos cómo cifrar la contraseña usando el comando openssl y luego veremos cómo se puede cifrar esta utilizado en el script bash shell.

Cifrar contraseña usando Openssl

Supongamos que queremos conectarnos a un sistema remoto a través de ssh usando una contraseña dentro de un script de shell. Para cifrar una contraseña, use el siguiente comando openssl en su sistema Linux.

$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000  
-salt -pass pass:[email protected]#

Nota: Cadena seguida del comando echo ‘[email protected]#2’ es la cadena de contraseña que queremos cifrar y ‘[email protected]#’ es la contraseña que se utiliza durante el cifrado. Si la versión de openssl es 1.1.0 o menos, omita estas dos opciones ‘-pbkdf2 -iter 100000’

Para guardar la contraseña cifrada en un archivo, use el siguiente comando,

$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 
-salt -pass pass:[email protected]# > secret.txt

Establezca los siguientes permisos en el archivo secret.txt usando el comando chmod,

$ chmod 600 secret.txt

Descifrar la contraseña cifrada usando Openssl

Para descifrar la contraseña, ejecute a continuación

$ cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 
 -salt -pass pass:[email protected]#
[email protected]#2
$

Nota: Si lo ha notado con atención, hemos utilizado la opción ‘-d’ para descifrar.

Usar contraseña cifrada en Bash Shell Script

Use el siguiente script de shell de muestra que usará una contraseña cifrada mientras se conecta al sistema remoto a través de 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

Guarde y cierre el archivo.

Haga que el script sea ejecutable ejecutando debajo del comando,

$ chmod +x sample.sh

Ahora ejecute el script para verificar si el cifrado se usa correctamente para conectarse 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'

Perfecto, la salida anterior confirma que el cifrado se descifra durante la ejecución.

Verifiquemos el contenido del archivo /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] ~]$

El resultado anterior confirma que el script puede capturar el resultado del comando dmesg. Eso es todo del artículo. Espero que tenga una idea de cómo podemos usar una contraseña cifrada dentro de un script de shell.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *