217 lines
8.5 KiB
Markdown
217 lines
8.5 KiB
Markdown
# Guía definitiva: Personal Access Token (PAT) en Git para Linux, Windows y macOS
|
|
|
|
Este manual explica cómo generar un **Personal Access Token (PAT)** en Forgejo, Gitea o GitHub y configurar el almacenamiento de credenciales de forma segura en los tres principales sistemas operativos: **Linux, Windows y macOS**.
|
|
|
|
## 1. Generación del Personal Access Token (PAT)
|
|
|
|
Antes de configurar tu sistema operativo, debes generar el token desde la plataforma web.
|
|
|
|
1. Inicia sesión en tu servidor **Forgejo, Gitea o GitHub**.
|
|
2. Dirígete a tu foto de perfil, ubicada en la esquina superior derecha, y accede a **Configuración (Settings)**.
|
|
3. Selecciona **Aplicaciones (Applications)** o **Developer settings**, según la plataforma, y busca **Personal Access Tokens**.
|
|
4. Haz clic en **Generar nuevo token**.
|
|
5. Asigna un nombre descriptivo, por ejemplo, `laptop-desarrollo`, y selecciona los permisos necesarios. Aplica el principio de mínimo privilegio y concede únicamente los permisos requeridos para tus operaciones Git.
|
|
6. Copia el token generado y guárdalo en un lugar seguro.
|
|
|
|
> **Importante:** El token sustituye a tu contraseña habitual cuando Git solicita autenticación mediante HTTPS. No lo compartas ni lo incluyas directamente en scripts o repositorios.
|
|
|
|
## 2. Configuración en Linux
|
|
|
|
En Linux, puedes almacenar las credenciales utilizando **Git Credential Manager**, `git-credential-libsecret` o una caché temporal en memoria.
|
|
|
|
### Opción A: Libsecret (recomendado para entornos con interfaz gráfica)
|
|
|
|
Libsecret permite integrar Git con los gestores de secretos del entorno de escritorio, como GNOME Keyring.
|
|
|
|
#### Paso 1. Instalar las dependencias
|
|
|
|
**Ubuntu/Debian:**
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install libsecret-1-0 libsecret-1-dev make gcc
|
|
```
|
|
|
|
**Fedora/RHEL:**
|
|
|
|
```bash
|
|
sudo dnf install libsecret-devel make gcc
|
|
```
|
|
|
|
> Los nombres de los paquetes pueden variar según la distribución y su versión.
|
|
|
|
#### Paso 2. Compilar el helper de Git
|
|
|
|
En sistemas Debian o Ubuntu donde se encuentre disponible el código fuente del helper:
|
|
|
|
```bash
|
|
sudo make --directory=/usr/share/doc/git/contrib/credential/libsecret
|
|
```
|
|
|
|
Si la ruta no existe, comprueba dónde está instalado Git y si tu distribución proporciona el código fuente de sus herramientas auxiliares.
|
|
|
|
#### Paso 3. Configurar Git
|
|
|
|
Si el ejecutable compilado se encuentra en la ruta indicada, configura el helper:
|
|
|
|
```bash
|
|
git config --global credential.helper \
|
|
/usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
|
|
```
|
|
|
|
Verifica la configuración:
|
|
|
|
```bash
|
|
git config --global --get credential.helper
|
|
```
|
|
|
|
### Opción B: Caché temporal en memoria
|
|
|
|
Esta opción es útil para servidores o entornos de línea de comandos sin interfaz gráfica.
|
|
|
|
El siguiente comando mantiene las credenciales en memoria durante ocho horas:
|
|
|
|
```bash
|
|
git config --global credential.helper 'cache --timeout=28800'
|
|
```
|
|
|
|
El valor `28800` representa ocho horas en segundos.
|
|
|
|
> **Nota de seguridad:** La caché es temporal y no equivale a un almacén persistente cifrado. Cuando expire, Git volverá a solicitar las credenciales. Para servidores, considera también Git Credential Manager u otro mecanismo seguro compatible con el entorno.
|
|
|
|
## 3. Configuración en Windows
|
|
|
|
En Windows, **Git Credential Manager (GCM)** permite almacenar y recuperar credenciales mediante los mecanismos seguros del sistema operativo.
|
|
|
|
### Paso 1. Verificar la instalación
|
|
|
|
Instala Git para Windows desde su [sitio oficial](https://git-scm.com/downloads/win). Git Credential Manager suele estar incluido en las instalaciones actuales.
|
|
|
|
### Paso 2. Configurar el administrador de credenciales
|
|
|
|
Abre PowerShell o Git Bash y ejecuta:
|
|
|
|
```powershell
|
|
git config --global credential.helper manager
|
|
```
|
|
|
|
Comprueba el valor configurado:
|
|
|
|
```powershell
|
|
git config --global --get credential.helper
|
|
```
|
|
|
|
### Paso 3. Autenticarse
|
|
|
|
Ejecuta una operación Git sobre un repositorio remoto HTTPS:
|
|
|
|
```bash
|
|
git fetch
|
|
```
|
|
|
|
Si todavía no existen credenciales almacenadas, Git Credential Manager iniciará el proceso de autenticación correspondiente.
|
|
|
|
Cuando se soliciten credenciales:
|
|
|
|
* **Usuario:** tu nombre de usuario en Forgejo, Gitea o GitHub.
|
|
* **Contraseña:** tu Personal Access Token (PAT), si la plataforma utiliza autenticación mediante token.
|
|
|
|
Dependiendo de la plataforma y de la configuración de GCM, es posible que se abra una ventana de inicio de sesión en lugar de solicitar el token directamente.
|
|
|
|
## 4. Configuración en macOS
|
|
|
|
En macOS, Git puede utilizar **Keychain Access (Acceso a Llaveros)** para almacenar las credenciales de forma persistente.
|
|
|
|
### Paso 1. Activar el helper de Keychain
|
|
|
|
Abre Terminal y ejecuta:
|
|
|
|
```bash
|
|
git config --global credential.helper osxkeychain
|
|
```
|
|
|
|
Verifica la configuración:
|
|
|
|
```bash
|
|
git config --global --get credential.helper
|
|
```
|
|
|
|
### Paso 2. Autenticarse por primera vez
|
|
|
|
Desde un repositorio local, ejecuta:
|
|
|
|
```bash
|
|
git fetch
|
|
```
|
|
|
|
Cuando Git solicite las credenciales:
|
|
|
|
* **Username:** tu nombre de usuario en Forgejo, Gitea o GitHub.
|
|
* **Password:** tu Personal Access Token (PAT), si corresponde a la autenticación configurada.
|
|
|
|
Una vez almacenadas, las credenciales podrán reutilizarse en operaciones posteriores, según la configuración del servidor y del llavero.
|
|
|
|
## 5. Matriz de comandos por sistema operativo
|
|
|
|
| Sistema operativo | Comando de configuración global | Almacenamiento |
|
|
| -------------------- | ------------------------------------------------------------------------- | --------------------------------------- |
|
|
| Linux (GUI) | `git config --global credential.helper /ruta/al/git-credential-libsecret` | GNOME Keyring u otro almacén compatible |
|
|
| Linux (CLI/servidor) | `git config --global credential.helper 'cache --timeout=28800'` | Memoria RAM temporal |
|
|
| Windows | `git config --global credential.helper manager` | Gestor de credenciales mediante GCM |
|
|
| macOS | `git config --global credential.helper osxkeychain` | Llavero de macOS |
|
|
|
|
> **Importante:** En Linux, reemplaza `/ruta/al/git-credential-libsecret` por la ruta real del ejecutable instalado. La ruta puede variar entre distribuciones.
|
|
|
|
## 6. Mantenimiento: borrar o actualizar credenciales
|
|
|
|
Si tu token expira, se revoca o necesitas sustituirlo, debes eliminar las credenciales almacenadas para que Git vuelva a solicitarlas.
|
|
|
|
### Linux: Libsecret
|
|
|
|
Si tienes disponible el helper `git-credential-libsecret`, puedes enviarle una solicitud para borrar las credenciales del servidor:
|
|
|
|
```bash
|
|
printf 'protocol=https\nhost=git.alphas.team\n\n' \
|
|
| git credential-libsecret erase
|
|
```
|
|
|
|
### Windows: Administrador de credenciales
|
|
|
|
1. Abre el menú Inicio.
|
|
2. Busca **Administrador de credenciales**.
|
|
3. Accede a **Credenciales de Windows**.
|
|
4. Busca la entrada asociada a `git.alphas.team`.
|
|
5. Selecciona la entrada correspondiente y haz clic en **Quitar**.
|
|
|
|
El nombre exacto de la entrada puede variar según la versión de Git y el método de autenticación utilizado.
|
|
|
|
### macOS: Keychain
|
|
|
|
Para eliminar las credenciales HTTPS almacenadas mediante el helper `osxkeychain`, ejecuta:
|
|
|
|
```bash
|
|
printf 'protocol=https\nhost=git.alphas.team\n\n' \
|
|
| git credential-osxkeychain erase
|
|
```
|
|
|
|
Git volverá a solicitar las credenciales cuando sean necesarias.
|
|
|
|
## 7. Buenas prácticas de seguridad
|
|
|
|
* **Mínimo privilegio:** concede al PAT únicamente los permisos que necesites.
|
|
* **Tokens individuales:** utiliza un token por equipo, aplicación o propósito cuando sea viable.
|
|
* **Expiración:** configura una fecha de vencimiento y renueva los tokens antes de que expiren.
|
|
* **Protección de secretos:** no guardes tokens en archivos de configuración compartidos, repositorios, capturas de pantalla ni scripts.
|
|
* **Revocación:** revoca inmediatamente cualquier token que sospeches que ha sido expuesto.
|
|
* **HTTPS:** utiliza URLs HTTPS para los repositorios cuando autentiques mediante PAT.
|
|
* **Verificación:** revisa el helper activo con `git config --show-origin --get-all credential.helper` si Git no utiliza el mecanismo esperado.
|
|
|
|
## 8. Referencias oficiales
|
|
|
|
* [Documentación de Git: almacenamiento de credenciales](https://git-scm.com/docs/gitcredentials)
|
|
* [Documentación de Git Credential Manager](https://github.com/git-ecosystem/git-credential-manager)
|
|
* [Documentación de GitHub: administración de Personal Access Tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)
|
|
|
|
---
|
|
|
|
**Fin de la guía.**
|