Desarrollo y bases de datos
Clonado y deploy desde repositorio remoto privado
Importante: Actualmente dispones de la herramienta Deploy, un sistema avanzado y sencillo de usar que se integra con tu repositorio de GitHub. Tienes más información en Deploy, herramienta de despliegue automático desde GitHub.
En otros artículos hemos hablado de las estrategias de deploy, como crear o clonar un repositorio desde cPanel e incluso aplicar cambios desde dicha interfaz.
No obstante hoy trataremos un método diferente ya que el uso de la interfaz de cPanel no suele ser la mejor opción cuando se trabaja con un repositorio remoto que es privado.
En el siguiente ejemplo clonaremos un repositorio privado alojado en GitHub, y tomaremos los cambios desde el mismo cuando sea necesario.
Requisitos
Ten en cuenta que trabajaremos con la terminal, por lo que es esencial que tengas un mínimo de conocimientos de su uso así como habilites el acceso SSH en tu servicio de hosting.
Una vez dentro, crea una clave Ed25519 dedicada únicamente a este repositorio. Si el nombre del archivo ya existe, elige otro; no sobrescribas una identidad en uso:
umask 077 mkdir -p ~/.ssh ssh-keygen -t ed25519 -f ~/.ssh/github_repositorio_deploy -C "deploy repositorio cpanel" chmod 600 ~/.ssh/github_repositorio_deploy chmod 644 ~/.ssh/github_repositorio_deploy.pub
Usa una frase de paso y un agente SSH cuando el proceso admita interacción. Si necesitas ejecutar un pull desatendido, la clave puede quedar sin frase de paso, pero debe permanecer fuera de public_html, con permisos 600, sin reutilizarse y con acceso de solo lectura a un único repositorio. Muestra la clave pública con:
cat ~/.ssh/github_repositorio_deploy.pub
Dando permisos desde GitHub
Ahora debemos permitir el acceso desde nuestro servidor al repositorio privado, en el caso de GitHub, accede al repositorio en cuestión:
- Haz clic en Settings dentro del repositorio concreto.
- En el menú lateral, abre Deploy keys.
- Pulsa Add deploy key, pega la clave pública y asigna un título identificable.
- No actives permisos de escritura si el hosting solo necesita clonar y actualizar el código.
Configura un alias para obligar a Git a usar esa identidad:
Host github-repositorio
HostName github.com
User git
IdentityFile ~/.ssh/github_repositorio_deploy
IdentitiesOnly yes
Guarda el bloque en ~/.ssh/config, aplica chmod 600 ~/.ssh/config y verifica previamente la huella de GitHub por un canal independiente.
Para comprobar que todo está correcto, ejecuta vía SSH en tu cuenta:
ssh -T git@github-repositorio
Si recibes una salida tipo:
Hi usuario/repositorio! You've successfully authenticated, but GitHub does not provide shell access.
Significa que la autenticación es correcta y podemos continuar los pasos.
Si por el contrario recibes Permission denied (publickey). significa que no tienes permisos, revisa el proceso de nuevo ya que debe haber algún paso no realizado correctamente.
Estos pasos son para GitHub, no obstante otras plataformas tipo Bitbucket tendrán un proceso similar por medio de autenticación por claves SSH.
Clonando el repositorio privado
Copia la URL del repositorio desde el botón Code, pestaña SSH, y sustituye github.com por el alias github-repositorio configurado antes.
Clona el repositorio fuera del directorio público:
mkdir -p ~/repositories
git clone git@github-repositorio:usuario/repositorio.git ~/repositories/repositorio
No clones directamente dentro de public_html: expondrías el directorio .git si el servidor web no lo bloquea. Publica solo los ficheros necesarios mediante la herramienta Deploy, .cpanel.yml o una estrategia de releases y enlaces simbólicos.
Obtener los cambios
Clonar o actualizar Git no instala dependencias ni publica automáticamente una web. Para actualizar el clon, comprueba primero su estado:
cd "$HOME/repositories/repositorio" || exit 1 git status --short git branch --show-current
Si hay cambios locales o la rama no es la esperada, detente y revisa su origen. Para la rama main, una actualización que no cree una fusión automáticamente sería:
git pull --ff-only origin main
Adapta la rama y ejecuta después el procedimiento de despliegue del proyecto. No uses git reset --hard para ocultar una divergencia sin revisar lo que perderías.
La clave de lectura de este ejemplo no permite git push. Si necesitas recuperar un cambio hecho en el hosting, revísalo y trasládalo a tu flujo de desarrollo sin ampliar por comodidad el permiso de la clave de despliegue.
Consideraciones
Git en nuestro sistema funciona como en tu equipo local. Si quieres prescindir de GitHub, puedes crear un repositorio privado fuera de public_html y conectar tu equipo a ese remoto. Mantén también fuera del directorio público cualquier clon de trabajo y publica en public_html solo los ficheros necesarios mediante Deploy, .cpanel.yml o una estrategia de releases. La interfaz Git de cPanel permite gestionar este flujo.
La prueba ssh -T de GitHub puede terminar con código 1 aunque confirme la autenticación, porque no ofrece una shell interactiva. Comprueba el mensaje y el repositorio autorizado, no solo el código de salida.
También te puede ayudar
- Desplegar Laravel desde GitHub con Git y .cpanel.yml de cPanel Monta un flujo de despliegue de Laravel desde GitHub a cPanel con claves dedicadas, .cpanel.yml, enl...
- Desplegar WordPress y Laravel en cPanel con Deployer Prepara despliegues por versiones con Deployer, configura archivos compartidos y comprueba qué puede...
- Git, interfaz gráfica con clonado, historial y deploy automático Gestiona repositorios Git desde cPanel; crea o clona proyectos, actualiza ramas, despliega con .cpan...
- Alojar React, Vue y webs estáticas conectadas a APIs externas Comprueba si tu frontend JavaScript cabe en un hosting compartido, conéctalo a Supabase, Firebase u...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.