🐧 نحوه استفاده از رمز عبور رمزگذاری شده در نسخه های Bash |

3 دقیقه

همیشه توصیه می شود از رمزهای عبور رمزگذاری شده در اسكریپت های Linux bash استفاده کنید.

As یک قاعده ، در پوسته اسکریپت های bash ممکن است هنگام اتصال به سیستم از راه دور ، کاربر ftp ، کاربر پروکسی و غیره به رمز عبور کاربر از راه دور نیاز داشته باشیم.

در این مقاله نحوه رمزگذاری رمز عبور با استفاده از دستور openssl بررسی خواهیم کرد و سپس ببینید که چگونه می توان از این رمز رمزگذاری شده در اسکریپت های پوسته استفاده کرد.

رمزگذاری رمز عبور با Openssl

بگذارید بگوییم می خواهیم با استفاده از یک رمز ورود در داخل یک اسکریپت پوسته به یک سیستم از راه دور ssh برویم.

برای رمزگذاری رمز عبور ، از دستور openssl در سیستم linux خود استفاده کنید.

 $ echo "Passw0rD @ # 2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 
-salt -pass pass: Secret @ 123 # 

توجه: خطی که به دنبال آن echo 'Passw0rD @ # 2' می شود رشته رمز عبوری است که می خواهیم رمزگذاری کنیم و 'Secret @ 123 #' رمز عبوری است که هنگام رمزگذاری استفاده می شود. اگر نسخه openssl 1.1.0 یا کمتر است ، از این دو گزینه '-pbkdf2 -iter 100000' صرف نظر کنید.

برای ذخیره رمز رمزگذاری شده در یک فایل ، دستور زیر را اجرا کنید ،

 $ echo "Passw0rD @ # 2 "| openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 
-salt -pass pass: Secret @ 123 #> secret.txt 

با استفاده از دستور chmod مجوزهای زیر را در پرونده secret.txt تنظیم کنید:

 $ chmod 600 secret.txt 

رمزگشایی رمز رمز شده با استفاده از Openssl

برای رمزگشایی رمز ورود خود ، این مراحل را دنبال کنید

 $ cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 
 گذر از نمک-نمک: Secret @ 123 #
Passw0rD @ # 2

$ توجه: اگر خوب نگاه می کردید ، ما از گزینه '-d' برای رمزگشایی استفاده کردیم.

استفاده از رمز عبور رمزگذاری شده در یک اسکریپت Bash

از اسکریپت مثال زیر استفاده کنید که هنگام اتصال به رمز عبور رمزگذاری شده یک سیستم از راه دور از طریق ssh.

 $ vi sample.sh
#! / bin / bash
USERNAME = سقوط می کند
PASSWD = `cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 
-iter 100000-نمک-پاس عبور: Secret @ 123 # "

REMOTE = 10.20.0.20

sshpass -p $ PASSWD ssh -o StrictHostKeyChecking = هیچ USERNAME @ $ REMOTE 
 'dmesg -Tx | grep -i error '> /tmp/a.tmp 

پرونده را ذخیره کرده و ببندید.

اسکریپت را قابل اجرا کنید:

 $ chmod + x sample.sh 

اکنون اسکریپت را اجرا کنید تا ببینید با موفقیت از رمزگذاری برای اتصال به سیستم از راه دور استفاده می شود.

 [devops@host1 ~] $ ./sample.sh
یا
[devops@host1 ~] $ bash -x sample.sh
+ USERNAME = تغییر می کند
++ openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt 
پاس عبور: Secret @ 123 #
++ گربه secret.txt
+ PASSWD = Passw0rD @ # 2
+ REMOTE = 10.20.0.20
+ sshpass -p Passw0rD @ # 2 ssh -o StrictHostKeyChecking = بدون [email protected] 
'dmesg -Tx | grep -i error '

عالی است ، نتیجه فوق تأیید می کند که رمزگذاری شده در زمان اجرا رمزگشایی شده است.

بیایید محتویات پرونده /tmp/a.tmp را بررسی کنیم ،

 [devops@host1 ~] $ cat / tmp / a.tmp
kern: info: [Thu Jun  3 13:36:51 2021] RAS: جمع کننده خطاهای قابل اصلاح 
 مقداردهی اولیه
هسته: خطا: [Thu Jun  3 13:36:53 2021] [drm:vmw_host_log [vmwgfx]] * خطا * 
 گزارش ارسال نشد
هسته: خطا: [Thu Jun  3 13:36:53 2021] [drm:vmw_host_log [vmwgfx]] * خطا * 
 گزارش ارسال نشد
[devops@host1 ~] $ 

خروجی فوق تأیید می کند که اسکریپت می تواند خروجی دستور dmesg را رهگیری کند.

امیدوارم بدانید که چگونه می توانید از رمز عبور رمزگذاری شده در داخل یک اسکریپت پوسته استفاده کنید.