Sunday, January 19, 2025

Sử dụng mật khẩu mã hóa trong Linux Bash Shell Script

-

Bạn nên sử dụng mật khẩu mã hóa trong các file bash shell của Linux. Thông thường, trong file bash shell, chúng ta có thể cần mật khẩu cho người dùng từ xa trong khi kết nối với hệ thống từ xa, người dùng ftp và người dùng proxy, v.v. Trong bài viết này, mình sẽ đề cập đến cách mã hóa mật khẩu bằng openssl.

Mã hóa mật khẩu bằng Openssl

Giả sử chúng ta muốn kết nối với hệ thống từ xa qua ssh bằng mật khẩu bên trong tập lệnh shell. Để mã hóa mật khẩu, hãy sử dụng lệnh openssl dưới đây trong hệ thống linux của bạn.

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

Lưu ý: ‘ Hoanghd164’ là mật khẩu mà mình muốn mã hóa nó và ‘Secret@123#’ là mật khẩu được sử dụng trong quá trình mã hóa.

Để lưu mật khẩu đã mã hóa vào một file, hãy sử dụng lệnh sau

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

Đặt các quyền sau trên file secret.txt bằng lệnh chmod 

$ chmod 600 secret.txt

Giải mã mật khẩu được mã hóa bằng Openssl

Để giải mã mật khẩu, hãy chạy bên dưới

$ cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 \
 -salt -pass pass:Secret@123#
Hoanghd164

Lưu ý: Mình đã sử dụng tùy chọn ‘-d’ để giải mã.

Sử dụng mật khẩu được mã hóa trong Bash Shell Script

Sử dụng file shell mẫu dưới đây sẽ sử dụng mật khẩu được mã hóa trong khi kết nối với hệ thống từ xa qua 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:Secret@123#`

REMOTE=10.20.0.20

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

Lưu và đóng file, phân quyền cho file có thể thực thi được bằng cách chạy lệnh bên dưới.

$ chmod + x sample.sh

Chạy thử file sample.sh.

$ bash -x sample.sh
+ USERNAME=devops
++ openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt \ 
-pass pass:Secret@123#
++ cat secret.txt
+ PASSWD=Passw0rD@#2
+ REMOTE=10.20.0.20
+ sshpass -p Passw0rD@#2 ssh -o StrictHostKeyChecking=no devops@10.20.0.20 \ 
'dmesg -Tx | grep -i error'

Hoàn hảo, đầu ra ở trên xác nhận rằng mã hóa được giải mã trong quá trình thực thi. Hy vọng bạn có một ý tưởng về cách chúng tôi có thể sử dụng mật khẩu được mã hóa bên trong một tập lệnh shell.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories