mirror of
https://github.com/Ascyii/dotfiles.git
synced 2025-12-31 22:44:24 -05:00
Simple bootstrap script from gpt
This commit is contained in:
90
bootstrap.sh
Executable file
90
bootstrap.sh
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env sh
|
||||
set -eu
|
||||
|
||||
SSH_DIR="$HOME/.ssh"
|
||||
MACHINE_KEY="$SSH_DIR/id_ed25519"
|
||||
|
||||
providers="github university strato gitea"
|
||||
|
||||
mkdir -p "$SSH_DIR"
|
||||
chmod 700 "$SSH_DIR"
|
||||
|
||||
###############################################################################
|
||||
# 1. Ensure machine-only key exists
|
||||
###############################################################################
|
||||
|
||||
if [ ! -e "$MACHINE_KEY" ]; then
|
||||
echo "No machine key found. Generating id_ed25519 (machine-only)."
|
||||
|
||||
ssh-keygen \
|
||||
-t ed25519 \
|
||||
-f "$MACHINE_KEY" \
|
||||
-N "" \
|
||||
-C "$(hostname)-machine"
|
||||
|
||||
chmod 600 "$MACHINE_KEY"
|
||||
chmod 644 "$MACHINE_KEY.pub"
|
||||
|
||||
echo "Machine key created:"
|
||||
echo " $MACHINE_KEY"
|
||||
echo " $MACHINE_KEY.pub"
|
||||
else
|
||||
echo "Machine key already exists: $MACHINE_KEY"
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
# 2. Provider-specific key bootstrap
|
||||
###############################################################################
|
||||
|
||||
echo
|
||||
echo "Select provider:"
|
||||
i=1
|
||||
for p in $providers; do
|
||||
printf " %d) %s\n" "$i" "$p"
|
||||
i=$((i + 1))
|
||||
done
|
||||
|
||||
printf "> "
|
||||
read -r choice
|
||||
|
||||
case "$choice" in
|
||||
1) provider="github" ;;
|
||||
2) provider="university" ;;
|
||||
3) provider="strato" ;;
|
||||
4) provider="gitea" ;;
|
||||
*)
|
||||
echo "Invalid selection" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
key_path="$SSH_DIR/id_$provider"
|
||||
|
||||
if [ -e "$key_path" ]; then
|
||||
echo "Refusing to overwrite existing key: $key_path" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
umask 077
|
||||
|
||||
echo
|
||||
echo "Paste the private key for '$provider'."
|
||||
echo "Finish with EOF (Ctrl-D on empty line)."
|
||||
echo
|
||||
|
||||
key="$(cat)"
|
||||
|
||||
case "$key" in
|
||||
*"BEGIN "*PRIVATE*" KEY"*)
|
||||
;;
|
||||
*)
|
||||
echo "Input does not look like a private key. Aborting." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "%s\n" "$key" > "$key_path"
|
||||
chmod 600 "$key_path"
|
||||
|
||||
echo
|
||||
echo "Key written to $key_path with permissions 600"
|
||||
Reference in New Issue
Block a user