Nuestro equipo de especialistas despúes de algunos días de investigación y recopilación de de información, dimos con la respuesta, esperamos que resulte útil para ti para tu proyecto.
Solución:
La mitad del objetivo de las contraseñas es que (idealmente) las memoriza y el sistema las codifica, por lo que nunca se almacenan en ningún lugar como texto sin formato.
Sin embargo, el sistema de token de acceso personal de GitHub parece básicamente obligarlo a almacenar el token en texto sin formato.
En primer lugar, un PAT (Token de acceso personal) no es una simple contraseña, sino un equivalente que:
- puede generar varias veces (por ejemplo, una por máquina desde la que necesita acceder al repositorio de GitHub)
- usted puede revocar en cualquier momento (desde la interfaz web de GitHub), lo que hace que ese PAT quede obsoleto, incluso si permanece en una de esas máquinas.
Eso difiere de su contraseña, que es única para su cuenta y no se puede cambiar fácilmente sin tener que además modifíquelo en cualquier lugar donde lo use.
Dado que se puede usar una PAT en lugar de una contraseña cuando se realizan operaciones de Git a través de HTTPS con Git en la línea de comando o la API, puede usar un asistente de credenciales de git para almacenarlo en caché de forma segura.
En Windows, por ejemplo, eso usaría el Administrador de credenciales de Windows, a través del GCM (Git Credential Manager) para Windows:
git config --global credential.helper manager
La primera vez que ingresa a un repositorio, una ventana emergente le pedirá sus credenciales: nombre de usuario y tu PAT.
La próxima vez, no preguntará y reutilizará directamente esa PAT, que permanece almacenada de forma segura en su Credential Manager.
Una idea similar se aplica a Mac con el llavero OSX y Linux con el llavero GNOME.
La idea permanece: almacenar el PAT en un encriptado almacén de credenciales.
La solución más moderna (cuarto trimestre de 2020) es microsoft Git-Credential-Manager-Core
git config --global credential.helper manager-core
Necesitas que eso se instale git-credential-manager-core
, descargando gcmcore-linux_amd64.2.0.252.766.deb
sudo dpkg -i
git-credential-manager-core configure
El soporte de Linux aún no está completamente implementado, pero lo estará pronto.
En mi caso, en Ubuntu, la solución aceptada no funcionó con un mensaje como
git: ‘credential-manager’ no es un comando git
pero store
en vez de manager
funcionado bien:
git config --global credential.helper store
Me gusta mantenerlos encriptados dentro del repositorio y cargarlos usando .envrc
(https://direnv.net/)
Para hacer esto, uso ssh-vault para cifrar los datos usando mi ssh keys que GitHub ya está exponiendo, por ejemplo:
echo MY_TOKEN="secret" | ssh-vault -u create > my-encypted-vars.ssh
Entonces el contenido de .envrc
se parece a esto:
echo "Enter ssh key password"
context=$(ssh-vault view $HOME/projects/my-encrypted.ssh | tail -n +2)
export $context
Esto descifrará los datos en my-encrypted-vars.ssh
archivar y configurar MY_TOKEN
en mis variables de entorno cada vez que cd
en el directorio del proyecto.
Al hacer esto, los tokens/variables se almacenan de forma “segura” y siempre están listos para usar como variables de entorno.
Si tienes alguna cuestión o disposición de aclarar nuestro crónica te evocamos añadir una explicación y con deseo lo leeremos.