cd "$(dirname "${SCRIPT_NAME}")"
# constants unlikely to change
+DIRNAME_SSH=.ssh
FNAME_PROFILE=.profile
NAME_DEV=dev
PATH_DEV="/${NAME_DEV}"
USERNAME=plom
# constants derived from changeables
+PATH_MY_SSH="${HOME}/${DIRNAME_SSH}"
PATH_PROFILE="${HOME}/${FNAME_PROFILE}"
PATH_REPO=$(cd .. && pwd)
--- /dev/null
+#!/bin/sh
+. "$(dirname "$0")/_lib.sh"
+
+# constants we might want to change at some point
+FNAME_REPO_TAR=repo.tar
+
+# constants derived from changeables
+NAME_REPO_DIR=$(basename "${PATH_REPO}")
+PATH_REPO_PARENT=$(dirname "${PATH_REPO}")
+PATH_SETUP_SCRIPT="./${NAME_REPO_DIR}/setup_scripts/start_root_server.sh"
+
+# inputs to confirm
+usage $# "server"
+SERVER=$1
+TARGET="root@${SERVER}"
+PATH_MY_KNOWN_HOSTS="${PATH_MY_SSH}/known_hosts"
+
+# sanity checks
+check_tools scp ssh ssh-keygen tar
+
+DIR_TEMP=$(mktemp --directory)
+PATH_REPO_TAR="${DIR_TEMP}/${FNAME_REPO_TAR}"
+msg 'Creating tar of repo in temporary directory %s …' "${DIR_TEMP}"
+tar cf "${PATH_REPO_TAR}" -C "${PATH_REPO_PARENT}" "${NAME_REPO_DIR}"
+
+msg 'Uploading repo tar to server …'
+if [ -e "${PATH_MY_KNOWN_HOSTS}" ]; then
+ ssh-keygen -f "${PATH_MY_KNOWN_HOSTS}" -R "${SERVER}"
+fi
+scp "${PATH_REPO_TAR}" "${TARGET}:~"
+rm -rf "${DIR_TEMP}"
+
+msg 'Unpacking repo and running setup script …'
+ssh "${TARGET}" tar xf "${FNAME_REPO_TAR}"
+ssh "${TARGET}" "${PATH_SETUP_SCRIPT}"
. "$(dirname "$0")/_lib.sh"
# constants unlikely to change
+PATH_SSHD_DROPIN=/etc/ssh/sshd_config.d/60-ssh-hardening.conf
+
+# constants derived from changeables
PATH_HOME_USER="/home/${USERNAME}"
-DIRNAME_SSH=.ssh
-PATH_ROOT_SSH="${HOME}/${DIRNAME_SSH}"
PATH_USER_SSH="${PATH_HOME_USER}/${DIRNAME_SSH}"
-PATH_SSHD_DROPIN=/etc/ssh/sshd_config.d/60-ssh-hardening.conf
start_root server
msg 'Moving ssh access from root to user …'
-mv "${PATH_ROOT_SSH}" "${PATH_HOME_USER}"
+mv "${PATH_MY_SSH}" "${PATH_HOME_USER}"
chown -R "${USERNAME}:${USERNAME}" "${PATH_USER_SSH}"
msg 'Hardening SSH login: no root login, no password auth …'