Cách sử dụng mật khẩu được mã hóa trong tập lệnh Shell trên Linux

Bash scripts là một phần quan trọng trong công việc của quản trị viên hệ thống. Chúng cho phép bạn tự động hóa cả các tác vụ thông thường và quan trọng.
Một trong những điều tốt nhất với tập lệnh là chúng có thể chạy độc lập mà không cần sự can thiệp của con người, nhưng đôi khi việc tự động hóa các tác vụ yêu cầu mật khẩu người dùng có thể là một thách thức. Hãy xem cách bạn có thể tự động hóa các tập lệnh yêu cầu mật khẩu một cách an toàn mà không ảnh hưởng đến bảo mật.
Mục Lục
Tạo một tập lệnh đơn giản
Giả sử rằng bạn muốn tạo một tập lệnh đơn giản để sao lưu thư mục chính Linux của bạn vào một vị trí từ xa để bạn có thể dễ dàng khôi phục dữ liệu của mình trong trường hợp mất dữ liệu.
Bắt đầu bằng cách tạo tệp script Bash trong thư mục chính của bạn, sử dụng lệnh cảm ứng hoặc bất kỳ phương pháp nào khác và đặt tên cho tệp đó backup_home.sh. Hãy thoải mái sử dụng bất kỳ tên và thư mục nào theo ý thích của bạn.
Tập lệnh sử dụng rsync lệnh, một công cụ sao chép tệp mạnh mẽ, để sao lưu tất cả các tệp trong thư mục chính cục bộ của bạn vào một máy chủ từ xa.
Sao chép nội dung của tập lệnh sau và dán vào tệp Bash của bạn. Hãy nhớ thay thế người dùng john bằng tên chính xác của người dùng gia đình tại địa phương của bạn. Đồng thời cung cấp tên người dùng và địa chỉ IP chính xác cho máy chủ từ xa.
#!/bin/bash
rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Nếu bạn không có máy chủ từ xa để kiểm tra, bạn có thể chỉ cần cài đặt VirtualBox và thiết lập một máy ảo trên máy cục bộ của mình. Sử dụng máy khách VM làm máy chủ từ xa của bạn.
Lưu các tập tin. Để thực thi tập lệnh, bạn cần cấp cho nó quyền thực thi bằng lệnh sudo chmod 755. Tất cả người dùng có thể thực thi tập lệnh nhưng chỉ người dùng sudo mới có thể sửa đổi tệp.
Cuối cùng, thực thi tập lệnh Bash từ thiết bị đầu cuối bằng lệnh:
./backup_home.sh
Bất cứ khi nào bạn chạy tập lệnh này, bạn sẽ được nhắc nhập mật khẩu máy chủ từ xa. Điều này không lý tưởng nếu bạn muốn chạy script mà không có sự can thiệp của con người, chẳng hạn như khi sử dụng Cron.
Tự động đăng nhập mật khẩu
Cài đặt sshpassmột nhà cung cấp mật khẩu không tương tác, trên PC cục bộ của bạn hoặc PC mà bạn sẽ chạy tập lệnh từ đó.
Trên các bản phân phối dựa trên Debian
Nếu bạn đang sử dụng bản phân phối dựa trên Debian, chẳng hạn như Ubuntu, Pop! _OS và Lubuntu:
sudo apt update && sudo apt install sshpass
Trên RHEL và Fedora
dnf install sshpass
Sau khi cài đặt sshpass, hãy sửa đổi tập lệnh để nó trông như sau.
#!/bin/bash
sshpass -p "yourpassword" rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Ở đây bạn cung cấp mật khẩu dưới dạng văn bản thuần túy. Rõ ràng, đây không phải là cách lý tưởng, vì nó không an toàn và không tốt. Nếu kịch bản rơi vào tay kẻ xấu, bạn đang gặp rắc rối sâu sắc.
Để làm cho điều này an toàn hơn, chúng tôi sẽ sử dụng GnuPG, một công cụ mã hóa nguồn mở và an toàn.
Mã hóa mật khẩu của bạn
GnuPG được cài đặt theo mặc định trên hầu hết các hệ thống Linux, nhưng trong trường hợp nó không được cài đặt trên hệ thống của bạn, đây là cách cài đặt GnuPG.
Tạo một tệp ẩn có tên bí mật sử dụng lệnh chạm vào .secrets. Vì chúng tôi đã đặt tệp ẩn theo mặc định như một biện pháp bảo mật bổ sung, đây là cách bạn có thể xem các tệp ẩn trên Linux.
Trong tệp bí mật, hãy nhập mật khẩu của PC từ xa của bạn và lưu nó.
Tiếp theo, mã hóa tệp bằng cách sử dụng gpg yêu cầu.
sudo gpg .secrets
Bạn sẽ được nhắc nhập cụm mật khẩu an toàn và mạnh để mở tệp được mã hóa.
GnuPG sẽ tạo một tệp mới với phần mở rộng .gpg được nối vào tên tệp cũ. Tên tệp mới của bạn bây giờ phải là bí mật.gpggiả sử bạn đã sử dụng bí mật tên tệp.
Nếu bạn xem nội dung của secret.gpg bằng cách sử dụng con mèo bạn sẽ thấy một số văn bản vô nghĩa để cho thấy rằng mật khẩu của bạn đã được mã hóa.
Để xem nội dung của tệp ở dạng văn bản thuần túy, bạn sẽ cần giải mã nó bằng lệnh sau (bạn sẽ được nhắc nhập mật khẩu bạn đã đặt trong quá trình mã hóa):
gpg -dq secrect.gpg
Sử dụng mật khẩu được mã hóa trong tập lệnh của bạn
Để sử dụng mật khẩu được mã hóa trong tập lệnh, hãy cập nhật tập lệnh như sau:
#!/bin/bash
gpg -dq secrets.gpg | sshpass rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Chạy lại các tập lệnh sao lưu và lần này bạn sẽ không được nhắc nhập mật khẩu.
Tự động hóa công việc với Bash Scripts
GnuGP thường được sử dụng để bảo mật các tệp và dữ liệu nhạy cảm trên PC của bạn và cũng là một công cụ tuyệt vời để bảo mật mật khẩu trong các tập lệnh Bash tự động trên Linux.
Có rất nhiều điều bạn có thể làm với các tập lệnh Bash. Bash là một công cụ mạnh mẽ có thể giúp bạn tự động hóa nhiều thứ trên Linux và học viết các tập lệnh Bash là một khoản đầu tư đáng giá.