Skip to content
Code and Bytes Code and Bytes

Code and Bytes
Code and Bytes

Configuración de despliegue automático con llaves SSH y GitHub Actions

Posted on 7 October, 202511 April, 2026

Automatizar el despliegue de tus proyectos puede ahorrarte tiempo y reducir errores. En esta guía, te explico cómo configurar un despliegue automático utilizando llaves SSH y GitHub Actions.

Generación de llaves SSH en el servidor

El primer paso es generar un par de llaves SSH específicas para GitHub Actions en tu servidor.

ssh-keygen -t rsa -b 4096 -C "github-actions-deployment" -f ~/.ssh/github_actions_deploy_key

Autoriza la nueva llave pública en el servidor:

Para que el servidor acepte conexiones autenticadas con tu nueva llave, debes registrar la llave pública.

cat ~/.ssh/github_actions_deploy_key.pub >> ~/.ssh/authorized_keys

Configura los permisos correctos

chmod 600 ~/.ssh/github_actions_deploy_key
chmod 644 ~/.ssh/github_actions_deploy_key.pub
chmod 600 ~/.ssh/authorized_keys

Obtén la llave privada para GitHub Actions:

cat ~/.ssh/github_actions_deploy_key

Copia todo el contenido (incluyendo las líneas `—–BEGIN` y `—–END`).

Configuración en GitHub Actions

Configura los siguientes datos en tu repositorio.

  1. Navega a Settings > Secrets and variables > Actions en tu repositorio de GitHub.
  2. En la pestaña Variables, agrega las siguientes variables para nuevos repositorios:
    • HOST (ej: tu-dominio.com)
    • USERNAME (ej: deploy-user)
    • PORT (ej: 22)
  3. En la pestaña Secrets, agrega el siguiente secreto crucial:
    • SSHKEY: Aquí debes pegar el contenido completo de tu llave privada. Se obtiene ejecutando cat ~/.ssh/github_actions_deploy_key en tu servidor.

Importante:

– Si necesitas revocar el acceso, simplemente elimina la llave pública correspondiente de `~/.ssh/authorized_keys` en el servidor.

Configuración del workflow de GitHub Actions

Crea el archivo .github/workflows/deploy-prod.yml con el siguiente contenido:

name: Deploy

# Trigger the workflow on push and
# pull request events on the production branch
on:
push:
branches:
- main
pull_request:
branches:
- main

# Authenticate to the the server via ssh
# and run our deployment script
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to server
uses: appleboy/ssh-action@master
with:
host: ${{ vars.HOST }}
username: ${{ vars.USERNAME }}
port: ${{ vars.PORT }}
key: ${{ secrets.SSHKEY }}
script: "cd /var/www/html && ./deploy.sh"

Con esta configuración completa, tu flujo de trabajo de GitHub Actions podrá autenticarse de forma segura en tu servidor y ejecutar comandos para desplegar tu aplicación automáticamente con cada push a la rama principal.

DevOps Git

Post navigation

Previous post
Next post

Related Posts

Git

Cómo cambiar el autor en los últimos 3 commits de Git

Posted on 16 August, 202511 April, 2026

Si necesitas actualizar el nombre o email del autor en múltiples commits de Git, este método con git rebase –interactive te permitirá hacerlo en minutos. Paso 1: Iniciar un rebase interactivo Si los commits que quieres modificar son los 3 primeros del repositorio:

Read More
DevOps

Solucionando el error “Connection refused” al ejecutar tests de PHPUnit en GitHub Actions

Posted on 23 March, 202611 April, 2026

Hace poco me encontré con un error bastante común (pero frustrante) al ejecutar tests de PHPUnit en GitHub Actions usando Laravel. Localmente todo funcionaba perfecto, pero en CI los tests fallaban inmediatamente con un error de conexión a la base de datos. El problema Al ejecutar los tests en GitHub…

Read More
DevOps

Configurar PostgreSQL en Laravel con Docker (incluyendo pgvector)

Posted on 22 March, 202611 April, 2026

Si estás montando un proyecto Laravel y quieres una base de datos PostgreSQL aislada con Docker, esta configuración te deja todo listo en pocos pasos. ¿Qué vas a tener al final?

Read More

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Buscar

Categorias

  • AI (2)
  • Asterisk (9)
  • Bases de datos (1)
  • DevOps (4)
  • Git (2)
  • HTML (1)
  • Laravel (6)
  • Linux (67)
  • MCP Server (1)
  • Mikrotik (3)
  • MySQL (5)
  • n8n (1)
  • Personal (4)
  • PHP (15)
  • Python (2)
  • Software recomendado (1)
  • Tips (1)
  • VSCode (4)
  • vTiger (4)
  • Windows (10)
  • Wordpress (4)
©2026 Code and Bytes | WordPress Theme by SuperbThemes