GNU/Linux >> Znalost Linux >  >> Linux

Jak používat šifrované heslo ve skriptu Linux Bash Shell

V linuxových bash shell skriptech se vždy doporučuje používat šifrovaná hesla. Typicky v bash shell skriptu můžeme potřebovat heslo pro vzdáleného uživatele při připojování ke vzdálenému systému, ftp uživatele a proxy uživatele atd. V tomto článku probereme, jak zašifrovat heslo pomocí příkazu openssl a poté uvidíme, jak lze toto zašifrované heslo používá se ve skriptu bash shell.

Šifrovat heslo pomocí Openssl

Předpokládejme, že se chceme připojit ke vzdálenému systému přes ssh pomocí hesla uvnitř skriptu shellu. Chcete-li zašifrovat heslo, použijte níže uvedený příkaz openssl ve vašem linuxovém systému.

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

Poznámka: Řetězec následovaný příkazem echo „[email protected]#2“ je řetězec hesla, kterým jej chceme zašifrovat, a „[email protected]#“ je heslo, které se používá během šifrování. Pokud je verze openssl 1.1.0 nebo nižší, přeskočte tyto dvě možnosti ‚-pbkdf2 -iter 100000‘

Chcete-li uložit zašifrované heslo do souboru, použijte následující příkaz

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

Nastavte následující oprávnění pro soubor secret.txt pomocí příkazu chmod,

$ chmod 600 secret.txt

Dešifrování zašifrovaného hesla pomocí Openssl

Chcete-li heslo dešifrovat, spusťte níže

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

Poznámka: Pokud jste si pozorně všimli, použili jsme k dešifrování volbu „-d“.

Použít šifrované heslo ve skriptu Bash Shell

Použijte níže ukázkový skript shellu, který bude používat šifrované heslo při připojování ke vzdálenému systému přes 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

uložte a zavřete soubor.

Udělejte skript spustitelným spuštěním pod příkazem

$ chmod +x sample.sh

Nyní spusťte skript a ověřte, zda je šifrování úspěšně použito pro připojení ke vzdálenému systému.

[[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'

Perfektní, výše uvedený výstup potvrzuje, že šifrování je během provádění dešifrováno.

Pojďme ověřit obsah souboru /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] ~]$

Výše uvedený výstup potvrzuje, že skript je schopen zachytit výstup příkazu dmesg. To je z článku vše. Doufám, že máte představu, jak můžeme použít šifrované heslo uvnitř skriptu shellu.


Linux
  1. Jak porovnávat čísla a řetězce ve skriptu Linux Shell

  2. Jak přidat uživatele Unix/linux do skriptu Bash?

  3. Jak zahrnout soubor do skriptu bash shell

  1. Jak definovat a používat funkce v Linux Shell Script

  2. Jak používat příkaz if else Conditionals ve skriptu Bash

  3. Změna hesla systému Linux ve skriptu bash

  1. Jak spustit příkaz / skript Linux Shell na pozadí

  2. Jak používat proměnné ve skriptování Shell

  3. Jak používat aliasy shellu v Linuxu