helm/apps/x86_64-linux/copy-keys
2024-03-18 12:02:21 -07:00

72 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env bash
set -e
unmount_usb() {
if mountpoint -q /mnt/usb; then
sudo umount /mnt/usb
echo -e "\e[0;32mUSB drive unmounted.\e[0m"
fi
}
mount_usb() {
if mountpoint -q /mnt/usb; then
echo -e "\e[0;32mUSB drive already mounted.\e[0m"
else
device_found=false
for dev in sda sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl; do
if sudo blkid /dev/$dev | grep -iq 'TYPE="vfat"'; then
device_found=true
mkdir -p /mnt/usb
sudo mount /dev/$dev /mnt/usb && { echo -e "\e[0;32mUSB drive mounted successfully on /dev/$dev.\e[0m"; break; } || echo -e "\e[0;31mFailed to mount /dev/$dev.\e[0m"
fi
done
if [ "$device_found" = false ]; then
echo -e "\e[0;31mNo USB devices found.\e[0m"
fi
fi
}
setup_ssh_directory() {
export SSH_DIR=/root/.ssh
mkdir -p $SSH_DIR
}
check_file_exists() {
if [[ ! -f $1 ]]; then
echo -e "\e[0;31mError: File $1 does not exist.\e[0m"
exit 1
fi
}
copy_keys() {
check_file_exists "/mnt/usb/id_ed25519_agenix.pub"
check_file_exists "/mnt/usb/id_ed25519_agenix"
cp /mnt/usb/id_ed25519_agenix.pub $SSH_DIR
cp /mnt/usb/id_ed25519_agenix $SSH_DIR
chmod 600 $SSH_DIR/id_ed25519_{agenix,agenix.pub}
echo -e "\e[0;32mKeys copied successfully.\e[0m"
}
set_keys() {
check_file_exists "/mnt/usb/id_ed25519_github.pub"
check_file_exists "/mnt/usb/id_ed25519_github"
cp /mnt/usb/id_ed25519_github.pub $SSH_DIR/id_ed25519.pub
cp /mnt/usb/id_ed25519_github $SSH_DIR/id_ed25519
chmod 600 $SSH_DIR/id_ed25519
chmod 644 $SSH_DIR/id_ed25519.pub
}
change_ownership() {
chown nixos:wheel $SSH_DIR/id_ed25519{,.pub}
chown nixos:wheel $SSH_DIR/id_ed25519_{agenix,agenix.pub}
}
trap unmount_usb EXIT
setup_ssh_directory
mount_usb
copy_keys
set_keys
change_ownership
unmount_usb