Contents
Scripts
SSH public key deployment script generator
( exec 3<&0 base64 -d -i <<'EOS' | bash KApzZXQgLWUgLUUgLUMgLXUgLW8gcGlwZWZhaWwgfHwgZXhpdCAxCnRyYXAgJ3sgZWNobyAiW2Vl XSBmYWlsZWQ6ICR7QkFTSF9DT01NQU5EfSIgPiYyIDsgZXhpdCAxIDsgfScgRVJSCgpjYXQgPDwn RU9TLTEnCigKc2V0IC1lIC1FIC1DIC11IC1vIHBpcGVmYWlsIHx8IGV4aXQgMQp0cmFwICd7IGVj aG8gIltlZV0gZmFpbGVkOiAke0JBU0hfQ09NTUFORH0iID4mMiA7IGV4aXQgMSA7IH0nIEVSUgpp ZiB0ZXN0ICEgLWUgIiR7SE9NRX0vLnNzaCIgOyB0aGVuCiAgICBta2RpciAiJHtIT01FfS8uc3No IgogICAgY2htb2QgMDcwMCAiJHtIT01FfS8uc3NoIgpmaQppZiB0ZXN0ICEgLWUgIiR7SE9NRX0v LnNzaC9hdXRob3JpemVkX2tleXMiIDsgdGhlbgogICAgdG91Y2ggIiR7SE9NRX0vLnNzaC9hdXRo b3JpemVkX2tleXMiCiAgICBjaG1vZCAwNjAwICIke0hPTUV9Ly5zc2gvYXV0aG9yaXplZF9rZXlz IgpmaQpleGVjIDM8PiIke0hPTUV9Ly5zc2gvYXV0aG9yaXplZF9rZXlzIgppZiAhIGZsb2NrIC14 IC1uIDMgOyB0aGVuCiAgICBlY2hvICJbZWVdIGxvY2tpbmcgZmFpbGVkIiA+JjIKICAgIGV4aXQg MQpmaQpvbGQ9IiQoIHNlZCAtciAtZSAnL14kLyBkJyA8L3Byb2Mvc2VsZi9mZC8zICkiCigKICAg IGNhdCA8PDwiJHtvbGR9IgogICAgZWNobwogICAgdHIgLWQgJyAnIHwgYmFzZTY0IC1kIC1pIHwg c2VkIC1yIC1lICcvXiQvIGQnCiAgICBlY2hvCikgfCBzZWQgLXIgLWUgJy9eJC8gZCcgfCBzb3J0 IC11ID58L3Byb2Mvc2VsZi9mZC8zCmV4aXQgMAopIDw8J0VPUycKRU9TLTEKYmFzZTY0IDwmMyB8 IHNlZCAtciAtZSAncyFeISAgICAhJwplY2hvIEVPUwpleGl0IDAKKSB8ICgKc2V0IC1lIC1FIC1D IC11IC1vIHBpcGVmYWlsIHx8IGV4aXQgMQp0cmFwICd7IGVjaG8gIltlZV0gZmFpbGVkOiAke0JB U0hfQ09NTUFORH0iID4mMiA7IGV4aXQgMSA7IH0nIEVSUgpjYXQgPDwnRU9TLTEnCmJhc2U2NCAt ZCAtaSA8PCdFT1MnIHwgYmFzaApFT1MtMQpiYXNlNjQKZWNobyBFT1MKZXhpdCAwCikK EOS )
(
set -e -E -C -u -o pipefail || exit 1
trap '{ echo "[ee] failed: ${BASH_COMMAND}" >&2 ; exit 1 ; }' ERR
cat <<'EOS-0'
(
exec 3<&0
base64 -d -i <<'EOS' | bash
EOS-0
base64 <<'EOS-0'
(
set -e -E -C -u -o pipefail || exit 1
trap '{ echo "[ee] failed: ${BASH_COMMAND}" >&2 ; exit 1 ; }' ERR
cat <<'EOS-1'
(
set -e -E -C -u -o pipefail || exit 1
trap '{ echo "[ee] failed: ${BASH_COMMAND}" >&2 ; exit 1 ; }' ERR
if test ! -e "${HOME}/.ssh" ; then
mkdir "${HOME}/.ssh"
chmod 0700 "${HOME}/.ssh"
fi
if test ! -e "${HOME}/.ssh/authorized_keys" ; then
touch "${HOME}/.ssh/authorized_keys"
chmod 0600 "${HOME}/.ssh/authorized_keys"
fi
exec 3<>"${HOME}/.ssh/authorized_keys"
if ! flock -x -n 3 ; then
echo "[ee] locking failed" >&2
exit 1
fi
old="$( sed -r -e '/^$/ d' </proc/self/fd/3 )"
(
cat <<<"${old}"
echo
tr -d ' ' | base64 -d -i | sed -r -e '/^$/ d'
echo
) | sed -r -e '/^$/ d' | sort -u >|/proc/self/fd/3
exit 0
) <<'EOS'
EOS-1
base64 <&3 | sed -r -e 's!^! !'
echo EOS
exit 0
) | (
set -e -E -C -u -o pipefail || exit 1
trap '{ echo "[ee] failed: ${BASH_COMMAND}" >&2 ; exit 1 ; }' ERR
cat <<'EOS-1'
base64 -d -i <<'EOS' | bash
EOS-1
base64
echo EOS
exit 0
)
EOS-0
cat <<'EOS-0'
EOS
)
EOS-0
exit 0
)SSH public key (base64) deployment
(
set -e -E -C -u -o pipefail || exit 1
trap '{ echo "[ee] failed: ${BASH_COMMAND}" >&2 ; exit 1 ; }' ERR
if test ! -e "${HOME}/.ssh" ; then
mkdir "${HOME}/.ssh"
chmod 0700 "${HOME}/.ssh"
fi
if test ! -e "${HOME}/.ssh/authorized_keys" ; then
touch "${HOME}/.ssh/authorized_keys"
chmod 0600 "${HOME}/.ssh/authorized_keys"
fi
exec 3<>"${HOME}/.ssh/authorized_keys"
if ! flock -x -n 3 ; then
echo "[ee] locking failed" >&2
exit 1
fi
old="$( sed -r -e '/^$/ d' </proc/self/fd/3 )"
(
cat <<<"${old}"
echo
tr -d ' ' | base64 -d -i | sed -r -e '/^$/ d'
echo
) | sed -r -e '/^$/ d' | sort -u >|/proc/self/fd/3
exit 0
) <<'EOS'
...
EOSSSH public / private key (base64) encoding
( set -e -E -C -u -o pipefail || exit 1 base64 | sed -r -e 's!^! !' exit 0 ) <<'EOS' ... EOS
