Files
principal-backup-script/ssh_extra_keys/generate_keypair.sh
2026-01-27 21:58:49 +09:00

32 lines
886 B
Bash
Executable File

#!/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 ''