GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie ein verschlüsseltes Passwort in einem Linux-Bash-Shell-Skript

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.


Linux
  1. So definieren und verwenden Sie Funktionen in Linux Shell Script

  2. So vergleichen Sie Zahlen und Zeichenfolgen im Linux-Shell-Skript

  3. So verwenden Sie die Bedingungsanweisung if else in Bash-Skript

  4. Wie füge ich einen Unix/Linux-Benutzer in einem Bash-Skript hinzu?

  5. So schließen Sie eine Datei in ein Bash-Shell-Skript ein

So verwenden Sie den Echo-Befehl in Bash-Skripten unter Linux

So installieren und verwenden Sie die ZSH-Shell unter Linux

So installieren Sie Linux Bash Shell unter Windows 10

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So installieren und verwenden Sie Nu Shell unter Linux

Wie verwende ich die Linux-Bash-Shell in Windows 10?