32 lines
886 B
Bash
Executable File
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 ''
|