私はこれを長い間探していますが、シェルスクリプトでパスワードを渡すことは可能ですか?回答の多くはノーで返されました。最近、シェルスクリプトでパスワードを渡す方法に関する記事を読みました。私はそれを試してみましたが、うまくいかないようです。これがリンクです。誰でもチェックアウトして元に戻すことができますか?また、私はシェルスクリプトでパスワードを渡す方法があると言っていますか?linuxがパスワードの入力を取得する方法を教えてくれない場合は?
私はこれを長い間探していますが、シェルスクリプトでパスワードを渡すことは可能ですか?回答の多くはノーで返されました。最近、シェルスクリプトでパスワードを渡す方法に関する記事を読みました。私はそれを試してみましたが、うまくいかないようです。これがリンクです。誰でもチェックアウトして元に戻すことができますか?また、私はシェルスクリプトでパスワードを渡す方法があると言っていますか?linuxがパスワードの入力を取得する方法を教えてくれない場合は?
回答:
「パスワードを入力する」とは、ユーザーに表示されずにデータを入力することを意味します。
bashのを使用する場合は、あなたが使用することができます(geirhaによって提案された)-s
が表示されてから入力された文字を防ぐために、オプションを:
read -p "Password please: " -s pass
または、ターミナルの動作を変更して、入力した文字を非表示にしますstty -echo
(無効にするecho
)。シェルに組み込まれたパスワードをread
変数に読み込んだ後(下の例では$pass
)、で再び有効にしstty echo
ます。からの新しい行Enterは隠されているため、新しい行で将来の出力を得るには、新しい行を印刷する必要があります。
stty -echo
read -p "Password please: " pass
stty echo
printf '\n'
read
そしてprintf
ビルトインをシェルしています。デフォルトでインストールされるパッケージstty
によって提供coreutils
されます。つまり、このスニペットは非常にポータブルです。
注:この-p
オプションは標準ではありませんが、からbash
です。他のシェルでプロンプトを表示する必要がある場合は、次を使用します。
printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'
参照:
help '\read'
。
zsh
それを介して達成されread -s 'pw?Prompt text'
、pw
パスワードは変数配置されるとされている-s
非表示入力するフラグです。
どのプログラムにパスワードを渡しますか?
リンクのスクリプトは私のために機能します。これはシェルスクリプトではなく、期待されるスクリプトであることに注意してください(パッケージexpect
をインストールする必要があります)。expectは、テキストベースのインタラクティブプログラムを自動化する一般的な方法です。
非対話型ssh
ログインは、多くの場合、空のパスフレーズを使用したキーベースの認証を使用して行われます。
他の一部のプログラム(などsudo
)には、stdinからパスワードを読み取るオプションがあります。
コマンドラインオプションとしてパスワードを提供することは多くの場合、セキュリティ上の問題です。ほとんどのシステムでは、などの単純なツールを使用して、コマンドライン引数を含む他のユーザープロセスを見ることができますps
。
ssh-keygen
認証キーを作成するために使用し(パスフレーズを求められたらEnterを押すだけ)、それを使用してリモートユーザーにそれをコピーしますssh-copy-id
。パスワードを聞かないでください。
スクリプトが実際にパスワードを処理することはありません。パスワードが必要なアプリケーションにパスワードを要求するか、それが不可能な場合は、アプリケーションで認証するためのより良い手段を見つけてください。http://mywiki.wooledge.org/BashFAQ/069をお読みください
bashスクリプトにパスワードを保存する方法はありますが、スクリプトを暗号化して誰も実際に読み取れないようにするか、あらゆる種類のデバッガーを実行して、スクリプトの動作を正確に確認する必要があります。bash / shellスクリプトを暗号化して実際に実行可能にするには、ここにコピーして貼り付けてみてください
上記のページで、あなたがしなければならないことは、あなたのスクリプトを提出することです(あなたの安心のために最初にサンプルスクリプトを提出できます)。zipファイルが生成されます。ダウンロードリンクを右クリックし、提供されたURLをコピーします。次に、UNIXボックスに移動して、次の手順を実行します。
インストール:
wget link-to-the-zip-file
unzip the-newly-downloaded-zip-file
cd /tmp/KingLazySHIELD
./install.sh /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username) -force
上記のインストールコマンドが行うことは次のとおりです。
暗号化されたスクリプトをディレクトリにインストールします/var/tmp/KINGLAZY/SHIELDX-(your-script-name)
。
この暗号化されたスクリプトへのリンクは、代わりに指定するディレクトリに配置されます/home/(your-username)
-そのようにすると、絶対パスを入力しなくてもスクリプトに簡単にアクセスできます。
誰もスクリプトを変更できないことを確認します-暗号化されたスクリプトを変更しようとすると、その操作が停止または削除されるまで、スクリプトは動作不能になります。
誰も絶対にコピーできないようにします。誰もあなたのスクリプトを人里離れた場所にコピーして、それがどのように機能するかを見るためにそれをいじってみることはできません。スクリプトのすべてのコピーは、インストール中に指定した元の場所へのリンクである必要があります。
注意:
ユーザーに応答を促す対話型スクリプトではこれが機能するとは思わない。値はスクリプトにハードコーディングする必要があります。暗号化により、誰も実際にそれらの値を見ることができないようになりますので、心配する必要はありません。