#!/bin/bash source ~/.bashrc # Setup SSH Keys for Proxmox Access # Generates SSH key and provides instructions for adding to Proxmox hosts set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } SSH_KEY_NAME="id_ed25519_proxmox" SSH_KEY_PATH="$HOME/.ssh/$SSH_KEY_NAME" PUBLIC_KEY_PATH="$SSH_KEY_PATH.pub" generate_key() { if [ -f "$SSH_KEY_PATH" ]; then log_info "SSH key already exists: $SSH_KEY_PATH" return 0 fi log_info "Generating SSH key..." ssh-keygen -t ed25519 -f "$SSH_KEY_PATH" -N "" -C "proxmox-access" log_info "✓ SSH key generated: $SSH_KEY_PATH" } display_public_key() { if [ -f "$PUBLIC_KEY_PATH" ]; then log_info "Your public SSH key:" echo "" cat "$PUBLIC_KEY_PATH" echo "" log_info "Copy this key and add it to Proxmox hosts" else log_error "Public key not found: $PUBLIC_KEY_PATH" return 1 fi } show_instructions() { log_info "To add SSH key to Proxmox hosts:" echo "" echo "Option 1: Via Proxmox Web UI Shell" echo " 1. Access Proxmox Web UI" echo " 2. Node → System → Shell" echo " 3. Run:" echo " mkdir -p ~/.ssh" echo " chmod 700 ~/.ssh" echo " echo '$(cat $PUBLIC_KEY_PATH)' >> ~/.ssh/authorized_keys" echo " chmod 600 ~/.ssh/authorized_keys" echo "" echo "Option 2: Copy public key to clipboard" echo " Run: cat $PUBLIC_KEY_PATH | xclip -selection clipboard" echo " Then paste into Proxmox shell" echo "" echo "Option 3: Use ssh-copy-id (if password auth works)" echo " ssh-copy-id -i $PUBLIC_KEY_PATH root@192.168.1.206" echo " ssh-copy-id -i $PUBLIC_KEY_PATH root@192.168.1.49" } main() { echo "=========================================" echo "SSH Key Setup for Proxmox Access" echo "=========================================" echo "" generate_key echo "" display_public_key echo "" show_instructions echo "" log_info "After adding the key to Proxmox hosts, test with:" log_info " ssh -i $SSH_KEY_PATH root@192.168.1.206 'hostname'" } main "$@"