#!/bin/bash # Script: alta_nodo.sh # Uso: ./scripts/alta_nodo.sh [USUARIO] # Descripción: Automatiza la configuración SSH local y el despliegue de claves al nuevo nodo. IP=$1 NAME=$2 USER_SSH=${3:-rmonla} # Por defecto usa 'rmonla' si no se especifica # Validar argumentos básicos if [ -z "$IP" ] || [ -z "$NAME" ]; then echo "❌ Error: Faltan argumentos." echo "Uso correcto: ./scripts/alta_nodo.sh [USUARIO]" echo "Ejemplo: ./scripts/alta_nodo.sh 10.0.10.205 srv-pmox4 rmonla" exit 1 fi echo "--- Iniciando Alta de Nodo: $NAME ($IP) con Usuario: $USER_SSH ---" # 1. Configurar SSH local (~/.ssh/config) if grep -q "^Host $NAME$" ~/.ssh/config; then echo "ℹ️ Host '$NAME' ya existe en ~/.ssh/config (Se asume configuración correcta)." else echo "🔧 Agregando '$NAME' a ~/.ssh/config..." cat >> ~/.ssh/config < /dev/null if [ $? -ne 0 ]; then echo "⚠️ Alerta: No hay ping a $IP. Verifica la red." else echo "✅ Ping exitoso." fi # 3. Intentar instalación automática de clave (ssh-copy-id) echo "🔑 Intentando instalar clave SSH automáticamente en $USER_SSH@$IP..." ssh-copy-id -o ConnectTimeout=5 -i ~/.ssh/id_rsa.pub $USER_SSH@$IP 2>/dev/null if [ $? -eq 0 ]; then echo "✅ Clave instalada exitosamente via ssh-copy-id." echo "🚀 Probando conexión SSH..." ssh -o ConnectTimeout=5 $NAME "uptime" else echo "⚠️ No se pudo copiar la clave automáticamente." echo "Probablemente necesites ingresar la contraseña de '$USER_SSH' si te la pide." echo "" echo "📋 SI FALLA, EJECUTA ESTO MANUALMENTE EN LA TERMINAL DEL NODO ($IP) con tu usuario:" echo "-----------------------------------------------------------" # Generamos el comando dinámicamente con la clave actual PUBKEY=$(cat ~/.ssh/id_rsa.pub) echo "mkdir -p ~/.ssh && echo \"$PUBKEY\" >> ~/.ssh/authorized_keys" echo "-----------------------------------------------------------" fi