GnuPGを使用して、リモートホスト(Linuxを実行している)に保存されている短いメッセージを復号化したいと思います。
ssh [<user>@]<Host>
gpg -d <file-to-decrypt>
しかし、より自動化された方法で。単一のコマンドを入力したいだけで、スクリプトが残りを実行する必要があります(パスワードの(対話型)入力を除く)。
remote-gpg [<user>@]<Host> <file-to-decrypt>
私の主な課題は、「ssh」と「gpg」のステップをマージすることです。
私はこれを達成するための簡単で効果的な方法を探しています:
ssh
+コアユーティリティのみ)gpg-agent
がサーバー上で実行されているかどうかについての仮定なししたがって、GNU expect
スクリプトを作成するなどの解決策は問題外です。
動機:一般的な使用例は、電話(Androidを実行)を使用して、リモートサーバーから暗号化されたメッセージ(パスワードなど)を取得することです。電話が紛失/盗難される前にログアウトを忘れる可能性があり、泥棒はパスワードを推測せずに追加情報を取得できないため、情報配信時に接続を閉じることが望まれます(パスワードは毎回照会されるため)。最後に、サーバーのauthorized_keysファイルから電話のSSHキーを削除するだけで、セキュリティ違反を防ぐことができます。
ちなみに、そのアプローチには(4ステップの手動プロセスと比較して)追加のセキュリティリスクがありますか?
ssh -t user@Host gpg -d file
それ以上に複雑である必要はないと思います。
復号化された出力は、端末にエコーバックされます。 -t
オプションはsshにttyを要求するように要求します。これは、gpgが端末でパスワードの入力を求めるために必要です。
これは、あなたの4ステップの方法ほど安全ではないようです。
tldr誰かにコードを書いてもらいたい。あなたにとって幸運なことに、私はすでに似たようなものを持っています。
復号化.sh:
#!/bin/bash
# Get our original tty and turn off -echo
stty_orig=`stty -g` stty -echo
read Pass
# type in your pass for gpg.
gpg --passphrase="$Pass" --no-tty -d $1
# Output goes to STDOUT
stty $stty_orig
それを呼び出す:
ssh -t user@Host 'decyrpt.sh File'
前提条件:ファイルはホームディレクトリにあり、decrypt.shは$ PATHにあります。