Forgejo: SSH y tokens de acceso

Por: Artiko
forgejosshtokensgpgseguridadautenticacion

Capitulo 8: SSH y tokens de acceso

Forgejo soporta multiples metodos de autenticacion para operaciones Git y acceso a la API. Elegir el metodo correcto depende del contexto: uso personal, CI/CD o scripts automatizados.


SSH Keys

Las claves SSH permiten autenticarte sin contrasena. Es el metodo recomendado para uso diario desde la linea de comandos.

Generar un par de claves

El algoritmo Ed25519 es el recomendado actualmente por su seguridad y rendimiento:

ssh-keygen -t ed25519 -C "[email protected]"

El comando te pedira:

  1. Ubicacion del archivo: acepta el valor por defecto ~/.ssh/id_ed25519
  2. Passphrase: una contrasena opcional que protege la clave privada. Se recomienda usarla

Esto genera dos archivos:

Agregar la clave publica en Forgejo

  1. Copia el contenido de la clave publica:
cat ~/.ssh/id_ed25519.pub
  1. En Forgejo, ve a Settings > SSH / GPG Keys
  2. Presiona Add Key
  3. Pega el contenido en el campo Content
  4. Asigna un nombre descriptivo (por ejemplo: “laptop-personal”)
  5. Guarda

Probar la conexion

ssh -T [email protected]

Si la configuracion es correcta, veras un mensaje como:

Hi usuario! You've successfully authenticated, but Forgejo does not provide shell access.

Si tienes multiples claves SSH, puedes configurar cual usar para cada host en ~/.ssh/config:

Host tu-dominio.com
    HostName tu-dominio.com
    User git
    IdentityFile ~/.ssh/id_ed25519_forgejo

Deploy Keys

Las deploy keys son claves SSH asociadas a un repositorio especifico en lugar de a una cuenta de usuario. Son ideales para servidores de produccion y pipelines de CI que solo necesitan acceso a un repositorio.

Crear una deploy key

  1. Genera un par de claves dedicado para el deploy (sin passphrase para automatizacion):
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_deploy_miproyecto -N ""
  1. En el repositorio de Forgejo, ve a Settings > Deploy Keys
  2. Presiona Add Deploy Key
  3. Pega la clave publica (~/.ssh/id_ed25519_deploy_miproyecto.pub)
  4. Asigna un nombre descriptivo
  5. Activa Allow Write Access si el proceso necesita hacer push (por ejemplo, actualizar version en un archivo)

Uso en el servidor

Configura ~/.ssh/config en el servidor para usar la clave correcta:

Host tu-dominio.com
    HostName tu-dominio.com
    User git
    IdentityFile /home/deploy/.ssh/id_ed25519_deploy_miproyecto

Tokens de acceso personal

Los tokens son cadenas alfanumericas que reemplazan la contrasena en autenticacion HTTP y en llamadas a la API REST.

Crear un token

  1. Ve a Settings > Applications
  2. En la seccion Manage Access Tokens, ingresa un nombre descriptivo
  3. Selecciona los scopes (alcances) que necesitas
  4. Presiona Generate Token
  5. Copia el token inmediatamente. Forgejo no lo mostrara de nuevo

Alcances disponibles

ScopeDescripcion
repoAcceso completo a repositorios (lectura y escritura)
repo:statusAcceso a estados de commits (CI checks)
public_repoAcceso a repositorios publicos unicamente
admin:orgGestion de organizaciones
admin:repo_hookGestion de webhooks
userLectura y modificacion del perfil de usuario
user:emailAcceso a direcciones de email
delete_repoPermiso para eliminar repositorios
packageAcceso al registro de paquetes
admin:gpg_keyGestion de claves GPG
admin:applicationGestion de aplicaciones OAuth

Principio de minimo privilegio: otorga solo los scopes que la aplicacion necesita.

Usar el token en clonado HTTP

# En la URL directamente
git clone https://[email protected]/usuario/mi-proyecto.git

# O configurarlo como credencial
git remote set-url origin https://[email protected]/usuario/mi-proyecto.git

Usar el token en llamadas a la API

curl -H "Authorization: token mi-token-aqui" \
  https://tu-dominio.com/api/v1/repos/usuario/mi-proyecto

Firmas GPG

Las firmas GPG garantizan que los commits provienen de quien dice ser el autor. Forgejo muestra los commits firmados con un indicador de “Verified”.

Generar una clave GPG

gpg --full-generate-key

Opciones recomendadas:

Exportar la clave publica

# Listar las claves disponibles
gpg --list-secret-keys --keyid-format LONG

# La salida muestra algo como:
# sec   rsa4096/ABCD1234EFGH5678 2026-01-01 [SC]

# Exportar la clave publica
gpg --armor --export ABCD1234EFGH5678

Agregar la clave en Forgejo

  1. Ve a Settings > SSH / GPG Keys
  2. Selecciona la pestana GPG Keys
  3. Pega el bloque completo que comienza con -----BEGIN PGP PUBLIC KEY BLOCK-----
  4. Presiona Add Key

Configurar git para firmar automaticamente

# Indicar a git que clave usar
git config --global user.signingkey ABCD1234EFGH5678

# Firmar todos los commits automaticamente
git config --global commit.gpgsign true

# Firmar todos los tags automaticamente
git config --global tag.gpgsign true

A partir de ahora, cada git commit incluira una firma GPG verificada por Forgejo.


Buenas practicas de seguridad

Tokens:

Claves SSH:

GPG:


Siguiente: Capitulo 9: Issues - gestion de tareas —>