Il est toujours recommandé d'utiliser des mots de passe cryptés dans les scripts shell bash Linux. En règle générale, dans le script shell bash, nous pouvons avoir besoin d'un mot de passe pour l'utilisateur distant lors de la connexion au système distant, à l'utilisateur ftp et à l'utilisateur proxy, etc. Dans cet article, nous expliquerons comment chiffrer le mot de passe à l'aide de la commande openssl, puis verrons comment ce mot de passe chiffré peut utilisé dans le script shell bash.
Crypter le mot de passe à l'aide d'Openssl
Supposons que nous voulions nous connecter au système distant via ssh en utilisant un mot de passe dans un script shell. Pour chiffrer un mot de passe, utilisez la commande openssl ci-dessous dans votre système Linux.
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]#
Remarque : La chaîne suivie de la commande echo "[email protected]#2" est la chaîne de mot de passe que nous voulons chiffrer et "[email protected]#" est le mot de passe utilisé lors du chiffrement. Si la version d'openssl est 1.1.0 ou moins, ignorez ces deux options '-pbkdf2 -iter 100000'
Pour enregistrer le mot de passe crypté dans un fichier, utilisez la commande suivante,
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# > secret.txt
Définissez les autorisations suivantes sur le fichier secret.txt à l'aide de la commande chmod,
$ chmod 600 secret.txt
Décrypter le mot de passe crypté à l'aide d'Openssl
Pour déchiffrer le mot de passe, exécutez ci-dessous
$ cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# [email protected]#2 $
Remarque : Si vous avez bien remarqué, nous avons utilisé l'option '-d' pour déchiffrer.
Utiliser un mot de passe crypté dans le script shell Bash
Utilisez l'exemple de script shell ci-dessous qui utilisera un mot de passe crypté lors de la connexion au système distant via 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
enregistrez et fermez le fichier.
Rendez le script exécutable en exécutant sous la commande,
$ chmod +x sample.sh
Exécutez maintenant le script pour vérifier si le chiffrement est utilisé avec succès pour se connecter au système distant.
[[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'
Parfait, la sortie ci-dessus confirme que le chiffrement est déchiffré lors de l'exécution.
Vérifions le contenu du fichier /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] ~]$
La sortie ci-dessus confirme que le script est capable de capturer la sortie de la commande dmesg. C'est tout de l'article. J'espère que vous avez une idée de la façon dont nous pouvons utiliser un mot de passe crypté dans un script shell.