Files
proxmox/scripts/dev-vm/add-dev-user-ssh-keys.sh

41 lines
1.7 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Add SSH public key(s) to dev1, dev2, dev3, dev4 on Dev VM (CT 5700).
# Usage:
# PUBLIC_KEY="$(cat ~/.ssh/id_ed25519.pub)" bash scripts/dev-vm/add-dev-user-ssh-keys.sh
# bash scripts/dev-vm/add-dev-user-ssh-keys.sh /path/to/key.pub
# bash scripts/dev-vm/add-dev-user-ssh-keys.sh # uses ~/.ssh/id_ed25519.pub or id_rsa.pub
# Requires: SSH as root to the Proxmox host that runs CT 5700 (default: PROXMOX_R630_01).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
source "$PROJECT_ROOT/config/ip-addresses.conf" 2>/dev/null || true
[ -f "$PROJECT_ROOT/.env" ] && set +u && source "$PROJECT_ROOT/.env" 2>/dev/null || true && set -u
VMID=5700
PROXMOX_HOST="${PROXMOX_HOST:-${PROXMOX_R630_01:-192.168.11.11}}"
USERS="dev1 dev2 dev3 dev4"
if [ -n "${PUBLIC_KEY:-}" ]; then
KEY="$PUBLIC_KEY"
elif [ -n "${1:-}" ] && [ -f "$1" ]; then
KEY=$(cat "$1")
elif [ -f "$HOME/.ssh/id_ed25519.pub" ]; then
KEY=$(cat "$HOME/.ssh/id_ed25519.pub")
elif [ -f "$HOME/.ssh/id_rsa.pub" ]; then
KEY=$(cat "$HOME/.ssh/id_rsa.pub")
else
echo "No public key found. Set PUBLIC_KEY= or pass a key file, or add ~/.ssh/id_ed25519.pub / id_rsa.pub"
exit 1
fi
KEY_B64=$(printf '%s\n' "$KEY" | base64 -w0)
echo "Adding SSH key to $USERS on CT $VMID (host $PROXMOX_HOST)..."
for u in $USERS; do
ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new root@"$PROXMOX_HOST" \
"pct exec $VMID -- bash -c 'mkdir -p /home/$u/.ssh && chmod 700 /home/$u/.ssh && echo \"$KEY_B64\" | base64 -d >> /home/$u/.ssh/authorized_keys && chmod 600 /home/$u/.ssh/authorized_keys && chown -R $u:$u /home/$u/.ssh'"
echo " OK: $u"
done
echo "Done. Test: ssh dev1@${IP_DEV_VM:-192.168.11.59}"