Create a gist now

Instantly share code, notes, and snippets.

@twhs /getpass.sh forked from vishvananda/getpass.sh
Last active Jun 18, 2016

Script for setting an encrypted password on boot
#!/usr/bin/env bash
# temp ファイル作成
# centos では mktemp コマンドが使用できる
SSH_KEYFILE=`mktemp`
SSL_KEYFILE=`mktemp`
USER='test'
# SSH 公開鍵を取得
if ! curl -s -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > $SSH_KEYFILE; then
echo "Failed to get key"
fi
cat $SSH_KEYFILE
# ランダムパスワード設定
PASSWORD=`openssl rand -base64 48 | tr -d '/+' | cut -c1-16`
usermod ${USER} -p `openssl passwd -1 $PASSWORD`
# SSH 公開鍵を openssl を利用して暗号化に利用できる形式に変換
ssh-keygen -e -f $SSH_KEYFILE -m PKCS8 > $SSL_KEYFILE
# ランダムパスワードを暗号化
ENCRYPTED=`echo "$PASSWORD" | openssl rsautl -encrypt -pubin -inkey $SSL_KEYFILE -keyform PEM | openssl base64 -e -A`
echo $'\n'"ENCRYPTED_PASSWORD:$ENCRYPTED" | tee /dev/console
# 暗号化したパスワードを POST する
curl -X POST http://169.254.169.254/openstack/latest/password -d $ENCRYPTED || true
rm $SSH_KEYFILE $SSL_KEYFILE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment