Selalu disarankan untuk menggunakan kata sandi terenkripsi dalam skrip shell bash Linux. Biasanya, dalam skrip bash shell kita mungkin memerlukan kata sandi untuk pengguna jarak jauh saat menghubungkan ke sistem jarak jauh, pengguna ftp dan pengguna proxy dll. Pada artikel ini, kita akan membahas cara mengenkripsi kata sandi menggunakan perintah openssl dan kemudian akan melihat bagaimana kata sandi terenkripsi ini dapat digunakan dalam skrip bash shell.
Enkripsi Kata Sandi Menggunakan Openssl
Mari kita asumsikan kita ingin terhubung ke sistem jarak jauh melalui ssh menggunakan kata sandi di dalam skrip shell. Untuk mengenkripsi kata sandi, gunakan perintah openssl di bawah ini di sistem linux Anda.
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]#
Catatan: String diikuti oleh perintah echo ‘[email protected]#2’ adalah string kata sandi yang ingin kita enkripsi dan ‘[email protected]#’ adalah kata sandi yang digunakan selama enkripsi. Jika versi openssl adalah 1.1.0 atau kurang, lewati dua opsi ini ‘-pbkdf2 -iter 100000’
Untuk menyimpan kata sandi terenkripsi ke file, gunakan perintah berikut,
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# > secret.txt
Atur izin berikut pada file secret.txt menggunakan perintah chmod,
$ chmod 600 secret.txt
Decrypt Encrypted Password Menggunakan Openssl
Untuk mendekripsi kata sandi, jalankan di bawah
$ cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# [email protected]#2 $
Catatan: Jika Anda perhatikan baik-baik, kami telah menggunakan opsi '-d' untuk mendekripsi.
Gunakan Kata Sandi Terenkripsi di Bash Shell Script
Gunakan contoh skrip shell di bawah ini yang akan menggunakan kata sandi terenkripsi saat menghubungkan ke sistem jarak jauh melalui 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
simpan dan tutup file.
Jadikan skrip dapat dieksekusi dengan menjalankan di bawah perintah,
$ chmod +x sample.sh
Sekarang jalankan skrip untuk memverifikasi apakah enkripsi berhasil digunakan untuk terhubung ke sistem jarak jauh.
[[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'
Sempurna, output di atas mengonfirmasi bahwa enkripsi didekripsi selama eksekusi.
Mari kita verifikasi isi file /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] ~]$
Output di atas mengonfirmasi bahwa skrip dapat menangkap output dari perintah dmesg. Itu saja dari artikel. Saya harap Anda mendapatkan ide bagaimana kami dapat menggunakan kata sandi terenkripsi di dalam skrip shell.