Es wird immer empfohlen, verschlüsselte Passwörter in Linux-Bash-Shell-Skripten zu verwenden. Normalerweise benötigen wir im Bash-Shell-Skript möglicherweise ein Passwort für den Remote-Benutzer, während wir uns mit dem Remote-System, dem FTP-Benutzer und dem Proxy-Benutzer usw. verbinden. In diesem Artikel behandeln wir, wie das Passwort mit dem Befehl openssl verschlüsselt wird, und sehen dann, wie dieses verschlüsselte Passwort sein kann Wird im Bash-Shell-Skript verwendet.
Passwort mit Openssl verschlüsseln
Nehmen wir an, wir möchten uns über ssh mit dem Passwort in einem Shell-Skript mit dem Remote-System verbinden. Um ein Passwort zu verschlüsseln, verwenden Sie den folgenden openssl-Befehl in Ihrem Linux-System.
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]#
Hinweis: Zeichenfolge gefolgt von Echobefehl „[email protected]#2“ ist die Passwortzeichenfolge, die wir verschlüsseln möchten, und „[email protected]#“ ist das Passwort, das während der Verschlüsselung verwendet wird. Wenn die Openssl-Version 1.1.0 oder niedriger ist, überspringen Sie diese beiden Optionen ‚-pbkdf2 -iter 100000‘
Um das verschlüsselte Passwort in einer Datei zu speichern, verwenden Sie den folgenden Befehl,
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# > secret.txt
Legen Sie die folgenden Berechtigungen für die Datei secret.txt mit dem Befehl chmod fest,
$ chmod 600 secret.txt
Verschlüsseltes Passwort mit Openssl entschlüsseln
Um das Passwort zu entschlüsseln, führen Sie unten
aus$ cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# [email protected]#2 $
Hinweis: Wenn Sie es genau bemerkt haben, haben wir die Option „-d“ zum Entschlüsseln verwendet.
Verschlüsseltes Passwort im Bash-Shell-Skript verwenden
Verwenden Sie das folgende Beispiel-Shell-Skript, das ein verschlüsseltes Passwort verwendet, während es sich über ssh mit dem Remote-System verbindet.
$ 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
Speichern und schließen Sie die Datei.
Machen Sie das Skript ausführbar, indem Sie den folgenden Befehl ausführen:
$ chmod +x sample.sh
Führen Sie nun das Skript aus, um zu überprüfen, ob die Verschlüsselung erfolgreich verwendet wird, um eine Verbindung zum Remote-System herzustellen.
[[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'
Die perfekte, obige Ausgabe bestätigt, dass verschlüsselt während der Ausführung entschlüsselt wird.
Lassen Sie uns den Inhalt der Datei /tmp/a.tmp überprüfen,
[[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] ~]$
Die obige Ausgabe bestätigt, dass das Skript die Ausgabe des dmesg-Befehls erfassen kann. Das ist alles aus dem Artikel. Ich hoffe, Sie haben eine Vorstellung davon, wie wir verschlüsselte Passwörter in einem Shell-Skript verwenden können.