Bashスクリプトで暗号化パスワードを使用する方法

Jun 30, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

パスワードで保護されたリソースに接続するためにLinuxスクリプトを使用することを余儀なくされている場合は、おそらくスクリプトにそのパスワードを入れることについて不安を感じます。 OpenSSLはあなたにとってその問題を解決します。

パスワードとスクリプト

シェルスクリプトにパスワードを入れることは素晴らしいアイデアではありません。実際、それは本当に悪い考えです。スクリプトが間違った手に入った場合、それを読むすべての人はパスワードのものを見ることができます。しかし、あなたがスクリプトを使うことを余儀なくされたならば、あなたは他に何をすることができますか?

プロセスがそのポイントに達するとパスワードを手動で入力できますが、スクリプトが無人で実行されている場合は機能しません。ありがたいことに、パスワードをスクリプトにハードコーディングするための代替手段があります。具体的には、これを達成するために異なるパスワードを使用して、いくつかの強い暗号化とともに使用します。

このシナリオの例では、UbuntuコンピュータからFedora Linuxコンピュータへのリモート接続を行う必要があります。 Bashシェルスクリプトを使用してFedoraコンピュータへのSSH接続を行います。スクリプトは無人で実行されなければならず、スクリプト内のリモートアカウントのパスワードを置き換えたくありません。この場合はSSHキーを使うことはできません。

私たちは有名なものを利用するつもりです OpenSSLツールキット 暗号化とユーティリティを処理するには s s パスワードをsshコマンドにフィードするには。

関連している: LinuxシェルからSSHキーを作成してインストールする方法

OpenSSLとSSHPASSのインストール

他の暗号化およびセキュリティツールはOpenSSLを使用するため、すでにコンピュータにインストールされる可能性があります。ただし、そうでない場合は、インストールする瞬間がかかります。

Ubuntuで、このコマンドを入力します。

 sudo apt openssl 

インストールする s s 、このコマンドを使用してください。

 SUDO APTインストールSSHPASS 

Fedoraでは、次のように入力する必要があります。

 SUDO DNFのインストールOpenSSL 

インストールするコマンド s s は:

 SUDO DNF SSHPASS 

Manjaro Linuxでは、OpenSSLをインストールできます。

 SUDO PACMAN -SY OpenSSL 

最後にインストールする s s 、このコマンドを使用してください。

 SUDO PACMAN -SY SSHPASS 

コマンドラインで暗号化します

私たちが使用する前に openssl スクリプトを使ったコマンドで、コマンドラインでそれを使用してそれをよく知ってみましょう。リモートコンピュータ上のアカウントのパスワードがあるとしましょう さびた!helering.pitshaft. 。私たちはそのパスワードを使って暗号化するつもりです openssl

私たちがするときに暗号化パスワードを提供する必要があります。暗号化パスワードは、暗号化および復号化プロセスで使用されます。のパラメータとオプションがたくさんあります openssl 指図。私たちは一瞬のうちそれぞれを見てみましょう。

エコー「さびた!helering.pitshaft」 OpenSSL ENC -AES-256-CBC -MD SHA512 -A-PBKDF2 -IRTER 100000 -SALT-PASS PASS: 'pick.your.password' 

私たちは使用しています エコー リモートアカウントのパスワードをパイプを通して送信するには openssl 指図。

NS openssl パラメータは次のとおりです。

  • ENC -AES-256-CBC :符号化タイプ。私たちはを使っています 高度な暗号化規格 暗号化ブロックチェーン付き256ビットキー暗号
  • -MD SHA512 :メッセージダイジェスト(HASH)タイプ。 SHA512暗号化アルゴリズムを使用しています。
  • -NS :これは告げます openssl 暗号化フェーズ後および復号化フェーズの前に基本64エンコーディングを適用する。
  • -pbkdf2. :パスワードベースのキー導出機能2(PBKDF2)の使用は、あなたのパスワードを推測することに成功することが成功することがはるかに困難です。 PBKDF2は暗号化を実行するために多くの計算を必要とします。攻撃者はそれらの計算をすべて複製する必要があります。
  • -IRTER 100000 :PBKDF2が使用する計算数を設定します。
  • -塩 :ランダムに印加された塩値を使用すると、プレーンテキストが同じであっても、暗号化出力を毎回異なるようにします。
  • -pass pass: 'pick.your.password' :パスワード暗号化されたリモートパスワードを復号化するために使用する必要があります。代わりの pick.your.password. あなたの選択の堅牢なパスワードを使って。

私たちの暗号化版 さびた!helering.pitshaft. パスワードは端末ウィンドウに書き込まれます。

これを復号化するには、その暗号化文字列を渡す必要があります。 openssl 私たちが暗号化したのと同じパラメータを持つが、 -NS (復号化)オプション

 ECHO U2FSDGVKX19IIIRNHSEG + WM / UKJTZJWNYOPJZPHYRDKYZH5LVZRPIGO1S0GOZU46 | OpenSSL ENC -AES-256-CBC -MD sha512 -a -d -pbkdf2 -iter 100000-salt -passパス: 'pick.your.password' 

文字列は復号化され、元のテキスト - リモートユーザーアカウントのパスワードがターミナルウィンドウに書き込まれます。

それは私達が私達のリモートユーザーアカウントのパスワードを安全に暗号化することができることを証明しています。暗号化フェーズで提供したパスワードを使用して必要な場合は、復号化することもできます。

しかし、これは実際に私たちの状況を改善しますか?リモートアカウントのパスワードを復号化するための暗号化パスワードが必要な場合は、確かに復号化パスワードがスクリプト内にある必要がありますか?さて、そう、そうです。しかし、暗号化されたリモートユーザーアカウントのパスワードは別の隠しファイルに保存されます。ファイルの権限は、あなたが誰かがあなたとシステムのrootユーザーを妨げるでしょう、明らかにそれにアクセスすることができます。

暗号化コマンドから出力をファイルに送信するには、リダイレクトを使用できます。ファイルは ".secret_vault.txt"と呼ばれます。暗号化パスワードをより堅牢に変更しました。

エコー「さびた!helering.pitshaft」 OpenSSL ENC -AES-256-CBC -MD SHA512 -A -PBKDF2 -IRTER 100000 -SALT-PASS PASS: 'Secret#Vault!パスワード'> .secret_vault.txt 

何も表示されませんが、パスワードは暗号化され、 ".secret_vault.txt"ファイルに送信されます。

隠しファイル内のパスワードを復号化することによって機能したことをテストできます。私たちは使用していることに注意してください ここでは違います エコー

 Cat .secret_vault.txt | OpenSSL ENC -AES-256-CBC -MD sha512 -a -d -pbkdf2 -iter 100000-salt-pass: 'Secret#Vault!Password' 

パスワードはファイル内のデータから正常に復号化されています。良い 使用する chmod. 他の誰もアクセスできないように、このファイルの権限を変更するには。

 Chmod 600 .secret_vault.txt 
 ls -l .secret_vault.txt 

許可を使用する600のマスクは、ファイルの所有者以外の誰かのためのすべてのアクセスを削除します。私たちはスクリプトを書くために進むことができます。

関連している: Linuxでchmodコマンドを使用する方法

スクリプト内のOpenSSLを使用してください

私たちのスクリプトはかなり簡単です:

#!/ bin / bash.

#リモートアカウントの名前
remote_user =オタク

#リモートアカウントのパスワード
REMOTE_PASSWD = $(CAT .secret_vault.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000-salt -passパス: 'Secret#Vault!Password')

#リモートコンピュータ
remote_linux = fedora-34.local.

#リモートコンピュータに接続し、script.logというファイルにタイムスタンプを入力します。
sshpass -p $ remote_passwd ssh -t $ remote_user @ $ REMOTE_LINUX< _remote_commands
Echo $ USER " - " "" "$(日付)>; /home/$ remote_user/script.log.
_remote_commands 
  • 呼び出された変数を設定します remote_user 「オタク」に。
  • その後、呼び出された変数を設定します remote_passwd 復号化されたパスワードの値には、瞬間前に使用したのと同じコマンドを使用して、 ".secret_vault.txt"ファイルから引き出されます。
  • リモートコンピュータの場所は、呼び出された変数に格納されています remote_linux

その情報では、これを使用できます s リモートコンピュータに接続するためのコマンド。

  • NS s s コマンドは接続線の最初のコマンドです。私たちはそれを使って使います -NS (パスワード)オプションこれにより、送信されるべきパスワードを指定できます。 s 指図。
  • 私たちはを使います -NS (疑似端末割り当てを無効にする)オプション s リモートコンピュータに疑似TTYを割り当てる必要はありません。

私たちは短いです ここで文書 リモートコンピュータにコマンドを渡すには。 2人の間のすべて _remote_commands 文字列はリモートコンピュータ上のユーザーセッションに指示として送信されます。この場合は、それは単一のBashスクリプトです。

リモートコンピュータに送信されたコマンドは、ユーザーアカウント名とタイムスタンプを「script.log」というファイルにログに記録します。

スクリプトをエディタにコピーして貼り付け、それを "go-remote.shというファイルに保存します。"詳細を変更して、独自のリモートコンピュータ、リモートユーザーアカウント、およびリモートアカウントのパスワードのアドレスを反映しています。

使用する chmod. スクリプトを実行可能にするため。

 CHMOD + X GO-REMOTE.SH 

残っているのはそれを試すことだけです。スクリプトを起動しましょう。

 / go-remote.sh 

私たちのスクリプトは無人スクリプトのためのミニマリストテンプレートであるため、端末への出力はありません。ただし、Fedoraコンピュータの "script.log"ファイルを確認した場合、リモート接続が正常に行われ、 "script.log"ファイルがタイムスタンプで更新されたことがわかります。

 CAT Script.log 

あなたのパスワードは私的です

リモートアカウントのパスワードはスクリプトに記録されていません。

そして復号化パスワード は、 スクリプトでは、それを復号化してリモートアカウントのパスワードを取得するために、他の誰も ".secret_vault.txt"ファイルにアクセスできません。


Linux - 最も人気のある記事

Linux上の壊れたシンボリックリンクを見つけて削除する方法

Linux Nov 12, 2024

Fatmawati Achmad Zaenuri / Shutterstock Linux上のシンボリックリンクは素晴らしい機能ですが、それらは壊れていて、何も指し�..


端末を使用してMacをロックする方法

Linux Feb 16, 2025

サイバーセキュリティの最初の規則の1つは、それから脱却する前に常にあなたのコンピュータをロックすることです。それが最も迅速な�..


ベストLinuxの開発者のための2021のラップトップや愛好家

Linux Sep 27, 2025

Tomeqs / ShutterStock.com 2021年のLinuxラップトップで探すもの あなたはほぼノートパソコンを買うことができます ..


KDE Con​​nectはついにiPhoneに来ています

Linux Oct 26, 2025

k あなたのiPhoneをあなたとうまく遊ばせる簡単な方法を探しているなら KDEデスクトップ 、今日はあなたのラッキーデ�..


10個の基本的なLinuxのコマンド

Linux Oct 13, 2025

ただ、Linux上で始めますか?コマンドラインで自分が快適に作ることは不可欠です。すでにコマンドラインユーティリティに精通している場..


アプリケーションとスクリプトをLinuxデスクトップに統合する方法

Linux Oct 10, 2025

Linuxでは、デスクトップファイルのないアプリケーションがデスクトップ環境と統合されません。 ほとんどのアプリケーションはそれを提供し�..


Linuxに環境変数をリストする方法

Linux Oct 31, 2025

Linuxでは、環境変数が重要な値と設定を保持します。 スクリプト、アプリケーション、およびシェルは、これらの値を読み、多くの場合、自分�..


Ubuntuで静的IPアドレスを設定する方法

Linux Oct 17, 2025

ホームネットワークは、デバイス間のデータをルーティングするためのIPアドレスに依存しており、ネットワークに再接続すると、デバイスの�..


カテゴリ