#!/usr/bin/env bash set -euo pipefail if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ] || [ $# -ne 1 ]; then declare -r ARGV0=$(basename "${0:-generate-keypair.sh}") printf 'Usage: %s SERVICE_NAME\n' "$ARGV0" >&2 cat <<'EOF' >&2 Generate a new keypair for use in backup targets Options: -h, --help Show this help and exit SERVICE_NAME The name of the service to generate a backup key for. Should not contain spaces. Example usage: # Generate a new keypair for backuping some service 'my-service' state via rsync generate-keypair.sh my-service EOF exit 1 fi declare -r PROJECT_ROOT="$(git rev-parse --show-toplevel)" declare -r KEYPATH="$PROJECT_ROOT/ssh_extra_keys/id_ed25519_$1_rsync_backup" if [[ -f "$KEYPATH" ]]; then printf "$KEYPATH already exists...\n" >&2 exit 1 fi ssh-keygen -t ed25519 -b 4096 -C "$1 rsync backup" -f "$KEYPATH" -N ''