需求:
公司的服務器登錄都是通過jumpserver堡壘機管理的,由於實在不喜歡web終端的操作,於是就寫了個自動登錄的shell腳本,由於腳本要公開給部分研發人員使用,但是腳本中包含了服務器的普通用戶和root用戶的密碼,所以為了不使密碼泄露要將腳本內容加密;
示例腳本:
#!/bin/bash for i in {1..10} do echo $i done
一、gzexe加密
gzexe命令比較簡單,其本質就是一個壓縮軟件,在CentOS 7.7上是自帶的,其他版本不清楚;
1、加密
[root@message test]# gzexe test.sh test.sh: 2.0% [root@message test]# ls test.sh test.sh~
執行完成后,會在當前目錄生成一個備份文件test.sh~,該文件的內容是原始明文文件的內容,是可以刪除的;test.sh文件就是加密壓縮后的文件,用cat查看時就是一堆亂碼,但是該加密腳本是可以執行的;
2、解密
[root@message test]# gzexe -d test.sh [root@message test]# ls test.sh test.sh~
執行完解密操作后,test.sh這個原來的加密文件就變成明文了;而test.sh~這個文件就是原先加密文件的備份,是加密的;
二、shc加密
shc是一個專業的加密工具,它可以將shell腳本轉換為一個可執行的二進制文件;
官網地址:http://www.datsi.fi.upm.es/~frosal/sources/ #目前官網已經斷更了
軟件地址:http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
1、安裝
wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz tar xvf shc-3.8.9.tgz -C /usr/local/ cd /usr/local/shc-3.8.9 mkdir -p /usr/local/man/man1 # 該步驟不能省略,make install的時候會報錯 [root@message shc-3.8.9]# make install *** Installing shc and shc.1 on /usr/local *** ¿Do you want to continue? y #是否繼續,輸入y即可 install -c -s shc /usr/local/bin/ install -c -m 644 shc.1 /usr/local/man/man1/ [root@message shc-3.8.9]# which shc #能看到環境變量則安裝成功 /usr/local/bin/shc
2、加密
[root@message test]# shc -r -f test.sh
[root@message test]# ls
test.sh test.sh.x test.sh.x.c
[root@message test]# cat test.sh
#!/bin/bash
for i in {1..10}
do
echo $i
done
[root@message test]# bash test.sh.x
test.sh.x: test.sh.x: 無法執行二進制文件
[root@message test]# ./test.sh.x
1
2
3
4
5
6
7
8
9
10
test.sh 原始文件
test.sh.x 二進制可執行文件,用cat查看會是一堆亂碼
test.sh.x.c 生成的C源碼,可以刪除
-r 制作可執行的二進制文件
-f 要編譯的腳本的文件名
三、總結
gzexe和shc相比來看,gzexe不需要安裝,操作也方便,但是安全性較差,懂行的人直接就解壓了;shc相對來說還需要安裝,目前官網也不再更新,但是安全性較高,破譯難度較大;