アプリの1つ github-backup
では、環境変数としてRSA秘密鍵を使用する必要があります。
端末でキーをエクスポートしようとするだけです。例:text export PRIVATE_KEY=-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA04up8hoqzS1+ ... l48DlnUtMdMrWvBlRFPzU+hU9wDhb3F0CATQdvYo2mhzyUs8B1ZSQz2Vy== -----END RSA PRIVATE KEY-----
動作しない...改行のため。
私は少しグーグルをしましたが、実行可能な解決策が見つかりませんでした...
e.g: AWS Elastic Beansの複数行RSA秘密鍵環境変数の設定方法
エラー:-----END RSA PRIVATE KEY-----': not a valid identifier
http://blog.vawter.com/2016/02/10/Create-an-Environment-Variable-from-a-Private-Key の指示に従いました。
次の行を含むkeytoenvar.sh
というファイルを作成しました。
#!/usr/bin/env bash
file=$2
name=$1
export $name="$(awk 'BEGIN{}{out=out$0"\n"}END{print out}' $file| sed 's/\n$//')"
その後、次のコマンドを実行しました。
source keytoenvar.sh PRIVATE_KEY ./gitbu.2018-03-23.private-key.pem
そのworksが、「long-winded」アプローチのように思えます... ????
simplerこれを行う方法を知っている人はいますか?
(「初心者に優しい」ソリューションで、「ステップ」が多すぎないことを望んでいます...)
キーをエクスポート
export PRIVATE_KEY=`cat ./gitbu.2018-03-23.private-key.pem`
test.sh
#!/bin/bash
echo $PRIVATE_KEY;
残りの環境変数を使用してキーを.env
ファイルに保存する場合は、秘密キー文字列を単一引用符で囲みます.env
ファイルで...例:sh exports HELLO_WORLD='-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA04up8hoqzS1+APIB0RhjXyObwHQnOzhAk5Bd7mhkSbPkyhP1 ... iWlX9HNavcydATJc1f0DpzF0u4zY8PY24RVoW8vk+bJANPp1o2IAkeajCaF3w9nf q/SyqAWVmvwYuIhDiHDaV2A== -----END RSA PRIVATE KEY-----'
したがって、次のコマンドが機能します。
echo "export PRIVATE_KEY='`cat ./gitbu.2018-03-23.private-key.pem`'" >> .env
に続く:
source .env
これで、キーは.envファイルに含まれ、.envをソースするたびにエクスポートされます。
(* .pemからではなく)直接値をエクスポートする場合は、等号の後に"
を使用します。端末は別の"
で終了します。
export PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA04up8hoqzS1+
...
l48DlnUtMdMrWvBlRFPzU+hU9wDhb3F0CATQdvYo2mhzyUs8B1ZSQz2Vy==
-----END RSA PRIVATE KEY-----"
NOTE:出力を正しく動作させるには、環境変数を二重引用符で囲む必要がありました。それ以外の場合は、改行をスペースに置き換えました。
に:
export PRIVATE_KEY=$(cat ./gitbu.2018-03-23.private-key.pem)
でる:
echo "$PRIVATE_KEY"
私が欲しかったのは、1つのスクリプトと1つの.pem
ファイルではなく、すべてを含む唯一の実行可能なShellスクリプトであり、その間にいくつかの体操を行います。
この統一を達成するために必要なのは、次のものだけです。準備段階:
cat id_rsa | base64 -w0
# assign the converted 1-liner string wrap in single quote into a Shell variable, for example
pk='xxxxxxxxxxxyyyyyyyyyyzzzzzzzzzzz......'
残りはウォークインザパークです。変数pk
を使用してsshするには、1ライナーの文字列を元の姿勢に変換し、一時ファイルに書き込みます。
t=$(mktemp)
printf $pk | base64 --decode > $t
ssh -i $t [email protected]
クリーンアップするには、trap
を使用します。
trap cleanup 1 2 3 6
cleanup () {
rm -f $t
}
セキュリティを向上させるには、mktemp
を変更して、同じサーバーの他のユーザーが読み取ることができる$HOME
ではなく、/tmp
フォルダー内の読み取り専用の場所に書き込むようにします。
Bash heredocを使用することもできます。
export MY_CERTIFICATE=$(cat <<EOF
-----BEGIN CERTIFICATE-----
qiuwiuwoejqododhIOOISOIIOiiSNIDNIDINDIONDIND
DDHDHUDHDUHUhudhHQhhqoohooiiohihiohihhihhihi
dhdiodhioho...
-----END CERTIFICATE-----
EOF
)
設定したら、通常のenv変数echo $MY_CERTIFICATE
としてアクセスできます。