Autenticación Git en Windows: SSH y Personal Access Tokens

GitHub, GitLab y Azure DevOps requieren autenticación para operaciones sobre repositorios privados. Las dos opciones recomendadas son claves SSH (más seguras, sin contraseña) y Personal Access Tokens (PAT, más simples de configurar).

Opción 1: Clave SSH

Generar par de claves SSH en Windows
# Genera clave ED25519 (más segura que RSA)
ssh-keygen -t ed25519 -C "tu@email.com"
# Acepta la ruta por defecto: C:\Users\tu_usuario\.ssh\id_ed25519

# Iniciar el agente SSH de Windows
Start-Service ssh-agent
Set-Service -Name ssh-agent -StartupType Automatic

# Añadir la clave al agente
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Copiar la clave pública para añadirla a GitHub
# Mostrar la clave pública (cópiala en GitHub → Settings → SSH Keys)
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

# O cópiala directamente al portapapeles
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | clip
Verificar conexión SSH con GitHub
ssh -T git@github.com
# Respuesta esperada: Hi username! You've successfully authenticated...

Opción 2: Personal Access Token (PAT)

  1. Ve a GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens
  2. Crea un token con permisos repo (lectura y escritura en repositorios)
  3. Copia el token (solo se muestra una vez)
  4. Úsalo como contraseña cuando Git te lo pida, o configura el Credential Manager
Almacenar PAT en Windows Credential Manager
# Activar el almacén de credenciales de Windows
git config --global credential.helper manager-core

# La próxima vez que hagas push/pull, introduce usuario + PAT como contraseña
# Git los guardará automáticamente para futuras operaciones
Desde Cerewro: configurar SSH en un solo pipeline
Configura mi autenticación SSH con GitHub: genera las claves, inicia el agente SSH y muéstrame la clave pública para añadirla a mi cuenta
Recomendación de seguridad: Usa claves SSH ED25519 para acceso diario y PATs con permisos mínimos y fecha de expiración para CI/CD y automatizaciones. Nunca pongas tu contraseña real de GitHub en scripts o variables de entorno sin cifrar.