69 lines
1.5 KiB
Plaintext
69 lines
1.5 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
set -e
|
||
|
|
||
|
RED='\033[0;31m'
|
||
|
GREEN='\033[0;32m'
|
||
|
NC='\033[0m'
|
||
|
|
||
|
username=${USER}
|
||
|
export SSH_DIR=/Users/${username}/.ssh
|
||
|
|
||
|
handle_no_usb() {
|
||
|
echo -e ${RED}No USB drive found or mounted.${NC}"
|
||
|
echo -e ${GREEN}If you have not yet set up your keys, run the script to generate new SSH keys.${NC}"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
mount_usb() {
|
||
|
MOUNT_PATH=""
|
||
|
for dev in $(diskutil list | grep -o 'disk[0-9]'); do
|
||
|
MOUNT_PATH="$(diskutil info /dev/${dev} | grep \"Mount Point\" | awk -F: '{print $2}' | xargs)"
|
||
|
if [ -n "${MOUNT_PATH}" ]; then
|
||
|
echo -e "${GREEN}USB drive found at ${MOUNT_PATH}.${NC}"
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ -z "${MOUNT_PATH}" ]; then
|
||
|
echo -e "${RED}No USB drive found.${NC}"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
copy_keys() {
|
||
|
if [ -n "${MOUNT_PATH}" ]; then
|
||
|
cp "${MOUNT_PATH}/id_ed25519_agenix.pub" ${SSH_DIR}
|
||
|
cp "${MOUNT_PATH}/id_ed25519_agenix" ${SSH_DIR}
|
||
|
chmod 600 ${SSH_DIR}/id_ed25519_{agenix,agenix.pub}
|
||
|
else
|
||
|
echo -e "${RED}No USB drive found. Aborting.${NC}"
|
||
|
exit 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
setup_ssh_directory() {
|
||
|
mkdir -p ${SSH_DIR}
|
||
|
}
|
||
|
|
||
|
set_keys() {
|
||
|
cp ${MOUNT_PATH}/id_ed25519_github.pub ${SSH_DIR}/id_ed25519.pub
|
||
|
cp ${MOUNT_PATH}/id_ed25519_github ${SSH_DIR}/id_ed25519
|
||
|
chmod 600 ${SSH_DIR}/id_ed25519
|
||
|
chmod 644 ${SSH_DIR}/id_ed25519.pub
|
||
|
}
|
||
|
|
||
|
change_ownership() {
|
||
|
chown ${username}:staff ${SSH_DIR}/id_ed25519{,.pub}
|
||
|
chown ${username}:staff ${SSH_DIR}/id_ed25519_{agenix,agenix.pub}
|
||
|
}
|
||
|
|
||
|
setup_ssh_directory
|
||
|
mount_usb
|
||
|
|
||
|
if [ -z "${MOUNT_PATH}" ]; then
|
||
|
handle_no_usb
|
||
|
else
|
||
|
copy_keys
|
||
|
set_keys
|
||
|
change_ownership
|
||
|
fi
|