usuario usar password guardar credenciales contraseña como comandos cambiar and git authentication github

usar - git y github



¿Hay alguna forma de omitir la escritura de contraseñas al usar https:// en GitHub? (23)

Recientemente cambié a la sincronización de mis repositorios a https: // en GitHub (debido a problemas con el firewall), y siempre me pide una contraseña. Solía ​​ser que tenía un certificado SSH , y era suficiente. ¿Hay alguna forma de omitir la contraseña en mi caso (usando http / https)?


Con Git versión 1.7.9 y posteriores.

Desde Git 1.7.9 (lanzado a fines de enero de 2012), existe un mecanismo ordenado en Git para evitar tener que escribir su contraseña todo el tiempo para HTTP / HTTPS, llamados ayudantes de credenciales . (Gracias a dazonic por señalar esta nueva característica en los comentarios a continuación).

Con Git 1.7.9 o posterior, puedes usar uno de los siguientes ayudantes de credenciales:

git config --global credential.helper cache

... lo que le dice a Git que mantenga su contraseña almacenada en la memoria caché durante (por defecto) 15 minutos. Puede establecer un tiempo de espera más largo con:

git config --global credential.helper "cache --timeout=3600"

(Ese ejemplo fue sugerido en la página de ayuda de GitHub para Linux ). También puede almacenar sus credenciales permanentemente, si lo desea, consulte las otras respuestas a continuación.

La ayuda de GitHub también sugiere que si estás en Mac OS X y Homebrew para instalar Git, puedes usar el almacén de claves nativo de Mac OS X con:

git config --global credential.helper osxkeychain

Para Windows, hay un ayudante llamado Git Credential Manager para Windows o wincred en msysgit .

git config --global credential.helper wincred # obsolete

Con Git para Windows 2.7.3+ (marzo de 2016):

git config --global credential.helper manager

Para Linux, puede usar gnome-keyring (u otra implementación de llavero como KWallet).

Con versiones Git anteriores a 1.7.9.

Con las versiones de Git anteriores a 1.7.9, esta opción más segura no está disponible, y tendrá que cambiar la URL que utiliza su remoto de origin para incluir la contraseña de esta manera:

https://you:[email protected]/you/example.git

... en otras palabras con :password después del nombre de usuario y antes de @ .

Puede establecer una nueva URL para su origin remoto con:

git config remote.origin.url https://you:[email protected]/you/example.git

Asegúrese de utilizar https , y debe tener en cuenta que si hace esto, su contraseña de GitHub se almacenará en texto sin formato en su directorio .git , lo que obviamente es indeseable.

Con cualquier versión de Git (bueno, desde la versión 0.99)

Un enfoque alternativo es poner su nombre de usuario y contraseña en su archivo ~/.netrc , aunque, al mantener la contraseña en la URL remota, esto significa que su contraseña se almacenará en el disco como texto simple y, por lo tanto, es menos segura y segura. no recomendado. Sin embargo, si desea adoptar este enfoque, agregue la siguiente línea a su ~/.netrc :

machine <hostname> login <username> password <password>

... reemplazando <hostname> con el nombre de host del servidor, y <username> y <password> con su nombre de usuario y contraseña. También recuerde establecer permisos de sistema de archivos restrictivos en ese archivo:

chmod 600 ~/.netrc

Tenga en cuenta que en Windows, este archivo debe llamarse _netrc , y es posible que deba definir la variable de entorno% HOME%. Para obtener más detalles, consulte:


OAuth

Puede crear su propio token API personal ( OAuth ) y usarlo de la misma manera que usaría sus credenciales normales (en: /settings/tokens ). Por ejemplo:

git remote add fork https://[email protected]/foo/bar git push fork

.netrc

Otro método es configurar su usuario / contraseña en ~/.netrc ( _netrc en Windows), por ejemplo

machine github.com login USERNAME password PASSWORD

Para HTTPS:

machine github.com login USERNAME password PASSWORD protocol https

Un ayudante de credenciales

Para guardar en caché su contraseña de GitHub en Git al usar HTTPS, puede usar un asistente de credenciales para decirle a Git que recuerde su nombre de usuario y contraseña de GitHub cada vez que hable con GitHub.

  • Mac: git config --global credential.helper osxkeychain (se osxkeychain helper ),
  • Windows: git config --global credential.helper wincred
  • Linux y otros: git config --global credential.helper cache

Relacionado:


TLDR; Utilice un archivo netrc cifrado con Git 1.8.3+ .

Es posible guardar una contraseña para una URL de HTTPS del repositorio de Git con ~/.netrc (Unix) o %HOME%/_netrc (observe la _ ) en Windows.

Pero : Ese archivo almacenaría su contraseña en texto plano.

Solución : Cifre ese archivo con GPG (GNU Privacy Guard) y haga que Git lo descifre cada vez que necesite una contraseña (para la operación push / pull / fetch / clone ).

Nota: con Git 2.18 (Q2 2018), ahora puede personalizar el GPG utilizado para descifrar el archivo .netrc cifrado.

Ver commit 786ef50 , commit f07eeed (12 de mayo de 2018) por Luis Marsano (``) .
(Fusionada por Junio ​​C Hamano - gitster - in commit 017b7c5 , 30 de mayo de 2018)

git-credential-netrc : acepta la opción gpg

git-credential-netrc fue codificado para descifrar con '' gpg '' independientemente de la opción gpg.program.
Este es un problema en distribuciones como Debian que llaman al moderno GnuPG otra cosa, como '' gpg2 ''

Instrucciones paso a paso para Windows

Con Windows:

(Git tiene un gpg.exe en su distribución, pero el uso de una instalación completa de GPG incluye un gpg-agent.exe , que memorizará su frase de contraseña asociada a su clave de GPG).

  • Instale gpg4Win Lite , la interfaz de línea de comandos de gnupg mínima (tome el gpg4win-vanilla-2.XY-betaZZ.exe más reciente ), y complete su RUTA con el directorio de instalación de GPG:

    set PATH=%PATH%:C:/path/to/gpg copy C:/path/to/gpg/gpg2.exe C:/path/to/gpg/gpg.exe

(Tenga en cuenta el comando '' copy '': Git necesitará un script Bash para ejecutar el comando '' gpg ''. Ya que gpg4win-vanilla-2 viene con gpg2.exe , debe duplicarlo).

  • Crea o importa una clave GPG, y confía en ella:

    gpgp --import aKey # or gpg --gen-key

(Asegúrese de poner una frase de paso a esa clave).

  • Confía en esa clave

  • Instale el script del asistente de credenciales en un directorio dentro de su %PATH% :

    cd c:/a/fodler/in/your/path curl -o c:/prgs/bin/git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc

(Sí, este es un script Bash, pero funcionará en Windows ya que Git lo llamará).

  • Hacer un archivo _netrc en texto claro

    machine a_server.corp.com login a_login password a_password protocol https machine a_server2.corp.com login a_login2 password a_password2 protocol https

(No olvide la parte del '' protocol '': '' http '' o '' https '' dependiendo de la URL que usará).

  • Cifrar ese archivo:

    gpg -e -r a_recipient _netrc

(Ahora puede eliminar el archivo _netrc , manteniendo solo el _netrc.gpg encriptado).

  • Use ese archivo encriptado:

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"

(Tenga en cuenta que '' / '': C:/path/to... no funcionaría en absoluto.) (Puede usar al principio -v -d para ver qué está pasando).

De ahora en adelante, cualquier comando Git que use una URL HTTP (S) que requiera autenticación descifrará ese archivo _netrc.gpg y usará el nombre de usuario / contraseña asociado al servidor con el que se está contactando. La primera vez, GPG le pedirá la frase de contraseña de su clave GPG para descifrar el archivo. Las otras veces, el agente gpg lanzado automáticamente por la primera llamada GPG proporcionará esa frase de contraseña para usted.

De esa manera, puede memorizar varias URL / nombres de usuario / contraseñas en un archivo, y tenerlo almacenado en su disco cifrado.
Me parece más conveniente que un "ayudante de caché", donde necesita recordar y escribir (una vez por sesión) una contraseña diferente para cada uno de sus servicios remotos, para que dicha contraseña se almacene en la memoria caché.


¡No fue inmediatamente obvio para mí que necesitaba descargar el asistente primero! Encontré la descarga de credential.helper en confluence.atlassian.com/display/STASH/… .

Citar:

Siga estos pasos si desea usar Git con caché de credenciales en OS X:

Descarga el binario git-credential-osxkeychain.

Ejecute el siguiente comando para asegurarse de que el binario sea ejecutable:

chmod a+x git-credential-osxkeychain

Ponlo en el directorio /usr/local/bin .

Ejecute el siguiente comando:

git config --global credential.helper osxkeychain


Después de clonar el repo , puede editar repo/.git/config y agregar alguna configuración como a continuación:

[user] name = you_name password = you_password [credential] helper = store

Entonces no se le pedirá de nuevo el username de username y la password .


En una configuración de GNU / Linux, un ~ / .netrc también funciona bastante bien:

$ cat ~/.netrc machine github.com login lot105 password howsyafather

Puede depender de qué bibliotecas de red está utilizando Git para el transporte HTTPS .


Es mejor usar las credenciales por seguridad, pero puedes mantenerlas durante un tiempo usando el caché:

git config --global credential.helper cache git config credential.helper ''cache --timeout=3600''

Sus credenciales se guardarán durante 3600 segundos.


Esto funciona para mí, estoy usando Windows 10

git config --global credential.helper wincred


Hay una manera fácil y antigua de almacenar las credenciales de los usuarios en una URL de HTTPS:

https://user:[email protected]/...

Puede cambiar la URL con git remote set-url <remote-repo> <URL>

El inconveniente obvio de este enfoque es que debe almacenar la contraseña en texto sin formato. Aún puede ingresar el nombre de usuario ( https://[email protected]/... ) que al menos le ahorrará la mitad de la molestia.

Es posible que prefiera cambiar a SSH o usar el software de cliente GitHub.


La documentación del compositor mentions que puedes evitar que use la API de GitHub, para que actúe como un git clone :

Si establece la clave no-api en true en un repositorio de GitHub, clonará el repositorio como lo haría con cualquier otro repositorio de Git en lugar de usar la API de GitHub. Pero a diferencia de usar el controlador git directamente, el compositor intentará usar los archivos zip de GitHub.

Así que la sección se vería así:

"repositories": [ { "type": "vcs", "no-api": true, "url": "https://github.com/your/repo" } ],

Tenga en cuenta que la API está ahí por una razón. Por lo tanto, este debe ser un método de último recurso para el aumento de carga en github.com.


Las cosas son un poco diferentes si estás usando la autenticación de dos factores como yo. Ya que no encontré una buena respuesta en otro lugar, pegaré una aquí para que pueda encontrarla más tarde.

Si está utilizando la autenticación de dos factores, la especificación del nombre de usuario / contraseña no funcionará, se le deniega el acceso. Pero puede usar un token de acceso a la aplicación y usar el ayudante de credenciales de Git para guardarlo en caché. Aquí están los enlaces pertinentes:

Y no recuerdo dónde vi esto, pero cuando se le pide su nombre de usuario, ahí es donde se pega el token de acceso a la aplicación. A continuación, deje la contraseña en blanco. Funcionó en mi Mac.


Para Windows puede usar el complemento Git Credential Manager (GCM). Actualmente es mantenido por Microsoft. Lo bueno es que guarda la contraseña en el almacén de credenciales de Windows, no como texto sin formato.

Hay un instalador en la página de lanzamientos del proyecto. Esto también instalará la versión oficial de Git para Windows con el administrador de credenciales integrado. Permite la autenticación de dos factores para GitHub (y otros servidores). Y tiene una interfaz gráfica para iniciar sesión inicialmente.

Para usuarios de Cygwin (o usuarios que ya usan el Git oficial para Windows), es posible que prefiera la instalación manual. Descarga el paquete zip desde la página de lanzamientos . Extraiga el paquete y luego ejecute el archivo install.cmd . Esto se instalará en su carpeta ~/bin . (Asegúrese de que su directorio ~/bin esté en su RUTA.) Luego, configúrelo con este comando:

git config --global credential.helper manager

Git ejecutará entonces git-credential-manager.exe cuando se autentique en cualquier servidor.


Por lo general, tienes una URL remota algo como esto,

git remote -v origin https://gitlab.com/username/Repo.git (fetch) origin https://gitlab.com/username/Repo.git (push)

Si desea omitir el nombre de usuario y la contraseña mientras usa git push , intente esto:

git remote set-url origin https://username:[email protected]/username/Repo.git

Acabo de agregar la misma URL (con los detalles del usuario, incluida la contraseña) al origen.

NOTA: No funciona si el nombre de usuario es un ID de correo electrónico.

git remote -v origin https://username:[email protected]/username/Repo.git (fetch) origin https://username:[email protected]/username/Repo.git (push)


Puede utilizar ayudantes de credenciales.

git config --global credential.helper ''cache --timeout=x''

donde x es el número de segundos.


Recibí mi respuesta de gitcredentials (7) Manual Page . Para mi caso, no tengo caché de credenciales en mi instalación de Windows; Yo uso credencial-tienda.

Después de usar el almacén de credenciales, el nombre de usuario / contraseña se almacenan en el archivo [carpeta de usuario] / .git-credentials. Para eliminar el nombre de usuario / contraseña, simplemente elimine el contenido del archivo.


Sé que esta no es una solución segura, pero a veces solo necesita una solución simple, sin instalar nada más. Y como helper = store no me funcionó, creé un ayudante ficticio:

Cree un script y póngalo en la carpeta bin de sus usuarios, aquí denominado credfake , este script le proporcionará su nombre de usuario y su contraseña:

#!/bin/bash while read line do echo "$line" done < "/dev/stdin" echo username=mahuser echo password=MahSecret12345

hazlo ejecutable:

chmod u+x /home/mahuser/bin/credfake

luego configurarlo en git:

git config --global credential.helper /home/mahuser/bin/credfake

(o úselo sin --global para un solo repositorio)

y - voilá - git usará esta contraseña de usuario.


Se debe usar un token de autenticación en lugar de la contraseña de la cuenta. Vaya a la configuración / aplicaciones de GitHub y luego cree un token de acceso personal. El token se puede utilizar de la misma manera que se usa una contraseña.

El token está destinado a permitir que los usuarios no utilicen la contraseña de la cuenta para el trabajo del proyecto. Utilice la contraseña solo cuando realice tareas de administración, como crear tokens nuevos o revocar tokens antiguos.

En lugar de un token o contraseña que otorga a un usuario acceso completo a una cuenta de GitHub, se puede usar una clave de implementación específica del proyecto para otorgar acceso a un solo repositorio de proyectos. Se puede configurar un proyecto de Git para usar esta clave diferente en los siguientes pasos cuando aún puede acceder a otras cuentas o proyectos de Git con su credencial normal:

  1. Escriba un archivo de configuración SSH que contenga el Host , IdentityFile para la clave de implementación, tal vez UserKnownHostsFile , y tal vez el User (aunque creo que no lo necesita).
  2. Escriba un script de shell de contenedor SSH que virtualmente sea ssh -F /path/to/your/config $*
  3. GIT_SSH=/path/to/your/wrapper frente a su comando normal de Git. Aquí, el git remote (origen) debe usar el [email protected]:user/project.git .

Si no desea almacenar su contraseña en texto sin formato como dijo Mark, puede usar una URL de GitHub diferente para la obtención de datos que para enviar. En su archivo de configuración, bajo [remote "origin"] :

url = git://github.com/you/projectName.git pushurl = [email protected]:you/projectName.git

Todavía solicitará una contraseña cuando presione, pero no cuando obtenga, al menos para proyectos de código abierto.


Simplemente incluya las credenciales de inicio de sesión como parte de la URL:

git remote rm origin git remote add origin https://username:[email protected]/path/to/repo.git


Solo puedes usar

git config credential.helper store

La próxima vez que ingrese la contraseña con pull o push, se almacenará en .git-credentials como texto simple (un poco inseguro, pero simplemente póngalo en una carpeta protegida)

Y eso es todo, como se indica en esta página:

https://git-scm.com/docs/git-credential-store


También edita el archivo bashrc y agrega un script en él.

Esto le pedirá su contraseña una vez cuando inicie Git y luego la recuerde hasta que cierre la sesión.

SSH_ENV=$HOME/.ssh/environment    # Start the ssh-agent function start_agent {     echo "Initializing new SSH agent..."     # Spawn ssh-agent     /usr/bin/ssh-agent | sed ''s/^echo/#echo/'' > "${SSH_ENV}"     echo succeeded     chmod 600 "${SSH_ENV}"     . "${SSH_ENV}" > /dev/null     /usr/bin/ssh-add }    if [ -f "${SSH_ENV}" ]; then      . "${SSH_ENV}" > /dev/null    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {       start_agent;   } else     start_agent; fi


También puede hacer que Git almacene sus credenciales permanentemente utilizando lo siguiente:

git config credential.helper store

Nota: Si bien esto es conveniente, Git almacenará sus credenciales en texto sin cifrar en un archivo local (.git-credenciales) en el directorio de su proyecto (consulte a continuación el directorio "principal"). Si no le gusta esto, elimine este archivo y cambie a usar la opción de caché.

Si desea que Git continúe pidiéndole credenciales cada vez que necesite conectarse al repositorio remoto, puede ejecutar este comando:

git config --unset credential.helper

Para almacenar las contraseñas en .git-credentials en su directorio %HOME% en lugar del directorio del proyecto: use la --global

git config --global credential.helper store


Utilice una tienda de credenciales.

Para Git 2.11+ en OS X y Linux , use el almacén de credenciales incorporado de Git :

git config --global credential.helper libsecret

Para msysgit 1.7.9+ en Windows :

git config --global credential.helper wincred

Para Git 1.7.9+ en OS X use:

git config --global credential.helper osxkeychain