Linuxのbashシェルスクリプトでは、暗号化されたパスワードを使用することを常にお勧めします。通常、bashシェルスクリプトでは、リモートシステム、ftpユーザー、プロキシユーザーなどに接続するときに、リモートユーザーのパスワードが必要になる場合があります。この記事では、opensslコマンドを使用してパスワードを暗号化する方法について説明し、この暗号化されたパスワードをどのように作成できるかを説明します。 bashシェルスクリプトで使用されます。
Opensslを使用してパスワードを暗号化する
シェルスクリプト内のパスワードを使用して、ssh経由でリモートシステムに接続するとします。パスワードを暗号化するには、Linuxシステムで以下のopensslコマンドを使用します。
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]#
注: 文字列の後にエコーコマンド「[emailprotected]#2」が続くのは、暗号化するパスワード文字列であり、「[email protected]#」は、暗号化中に使用されるパスワードです。 opensslバージョンが1.1.0以下の場合は、これら2つのオプション「-pbkdf2-iter100000」をスキップしてください
暗号化されたパスワードをファイルに保存するには、次のコマンドを使用します。
$ echo "[email protected]#2" | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 \ -salt -pass pass:[email protected]# > 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 \ -salt -pass pass:[email protected]# [email protected]#2 $
注: 注意深く気付いた場合は、「-d」オプションを使用して復号化しました。
Bashシェルスクリプトで暗号化されたパスワードを使用する
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
ファイルを保存して閉じます。
コマンドの下で実行してスクリプトを実行可能にします
$ chmod +x sample.sh
次に、スクリプトを実行して、暗号化がリモートシステムへの接続に正常に使用されているかどうかを確認します。
[[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'
完璧な上記の出力は、暗号化が実行中に復号化されることを確認します。
/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] ~]$
上記の出力は、スクリプトがdmesgコマンドの出力をキャプチャできることを確認します。記事からです。シェルスクリプト内で暗号化されたパスワードを使用する方法を理解していただければ幸いです。