GNU/Linux >> Linux の 問題 >  >> Linux

LinuxBashシェルスクリプトで暗号化されたパスワードを使用する方法

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コマンドの出力をキャプチャできることを確認します。記事からです。シェルスクリプト内で暗号化されたパスワードを使用する方法を理解していただければ幸いです。


Linux
  1. Linuxシェルスクリプトで関数を定義して使用する方法

  2. Linuxシェルスクリプトで数値と文字列を比較する方法

  3. Bashスクリプトでifelse条件文を使用する方法

  1. bashスクリプトでLinuxシステムのパスワードを変更する

  2. BashスクリプトにUnix/Linuxユーザーを追加する方法は?

  3. ファイルを bash シェル スクリプトに含める方法

  1. Linuxシェルコマンド/スクリプトをバックグラウンドで実行する方法

  2. シェルスクリプトで変数を使用する方法

  3. Linux でシェル エイリアスを使用する方法