¿Cómo me aseguro de que Git no me solicite mi nombre de usuario y contraseña de GitHub?

172

Estoy trabajando con un repositorio en GitHub y cada vez que intento presionar algo, me pide mi nombre de usuario y contraseña de GitHub. No quiero que haga eso.

Intenté las instrucciones para configurar su correo electrónico en Git , es decir, configurar las variables Gitub.user y github.token, pero eso no hizo ninguna diferencia.

No entiendo por qué está sucediendo esto.

picardo
fuente
Necesita almacenar en caché la contraseña: help.github.com/articles/set-up-git#password-caching
Piotr Usewicz

Respuestas:

33

Necesita configurar un agente ssh contra el cual solo necesita autenticarse una vez. Vea esta respuesta en SO para obtener un tutorial.

Benjamin Bannier
fuente
1
Pero esta solución es para frases de familia ssh. El problema es que git usa "git push" que no activa el agente ssh, supongo. (Ya hice esto, así que sé que no funciona)
Picardo
2
@picardo: He hecho esto, y de hecho funciona.
Daenyth
213

Tuve un problema similar hoy: desordené las cosas en mi copia de trabajo, así que decidí cambiar el nombre del directorio y clonar mi proyecto nuevamente desde github. Pero después de hacer eso, tuve que ingresar mi contraseña para hacer cualquier solicitud de extracción / inserción, en lugar de ingresar la frase de contraseña solo una vez como solía hacerlo.

¡Eso fue porque hoy usé el protocolo https para clonar el proyecto! Para verificar qué protocolo estás usando solo ejecuta

git config -l

y mira la línea que comienza con 'remote.origin.url'.

Para cambiar de protocolo:

git config remote.origin.url [email protected]:the_repository_username/your_project.git

the_repository_usernamey your_projectdebe reemplazarse con el nombre del repositorio apropiado y el propietario de ese repositorio. El nombre de usuario será suyo si posee el repositorio, o el nombre de usuario del propietario del repositorio de lo contrario.

Sergio Morstabilini
fuente
55
Funcionó para mi. Una cosa es que la url no contiene mi nombre de usuario sino la dirección del repositorio tal como aparece en github:[email protected]:some-user/repo-name.git
B Seven
1
Nota: Google me trajo aquí. Tenía el remote.origin.urlconjunto para el método https y ni siquiera noté que había métodos httpsvs. sshEsta URL me ayudó a ver lo obvio: help.github.com/articles/…
Chris K
¿Hay alguna forma de pasar también la contraseña?
zishe
Q para aquellos con conocimientos git: Cualquier diferencia (o preferencia) entre git config remote.origin.url ...usado anteriormente, frente git remote set-url origin ...?
Daryn el
No pude entender cómo eliminar un origen incorrecto como ese. La respuesta es:git remote rm origin
Vacilando
30

Si está utilizando HTTPS en lugar de SSH, puede seguir esto:

  1. Encuentra tu URL remota (remote.origin.url) con

    git config -l
    

    gracias a Sergio Morstabilini

  2. Su URL remota será así: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Ejecute este comando:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    
Eray
fuente
2
mi nombre de usuario contiene @, no funcionó para mí.
coding_idiot
Pero si no lo hace (no necesita usar su correo electrónico) ¡funciona perfectamente! Gracias.
Killah
44
Si su nombre de usuario incluye una @, debe codificarla en URL. meyerweb.com/eric/tools/dencoder
Tim Bodeit
1
Debe omitir su contraseña por razones de seguridad.
zygimantus
3
¡cuidado, la contraseña se almacenará en texto plano dentro del .git/configarchivo!
Amro
26

Prefiero usar HTTPS, me parece más fácil y más seguro que configurar las teclas ssh.

Usando HTTPS, puede evitar que git solicite a su nombre de usuario controles remotos de github con lo siguiente:

git config --global url."https://[email protected]".insteadOf "https://github.com"

Y al menos puede reducir la frecuencia que git solicita su contraseña con:

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

Donde 28800 son 8 horas. Utilizo esta configuración para ingresar mi contraseña solo una vez, cuando comienzo mi jornada laboral.

Después de eso, tendrá estas entradas dentro de su ~/.gitconfig

[url "https://[email protected]"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Fuente:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config

stefanmaric
fuente
6

Cuando configura una clave ssh para github, si no es su clave predeterminada, deberá agregar una sección a su ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa
Daenyth
fuente
6

Si está en Windows usando HTTPS, pruebe el Git Credential Store , que usa Windows Credential Store para guardar su nombre y contraseña.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Luego, la próxima vez que ingrese su nombre y contraseña, los recordará por usted.

Brian Burns
fuente
1
Gracias. El proyecto pasó a llamarse Git-Credential-Manager-for-Windows .
Michael S.
5

Además, si desea que se le solicite su contraseña cada vez, pero no su nombre de usuario, configure el control remoto como HTTPS con un nombre de usuario. De esta manera ...

git config remote.origin.url https://[email protected]/repo_owner/repo_name

Después de esto, se le pedirá su contraseña cada vez, pero no su nombre de usuario.

Así es como lo prefiero, ya que me gusta que me obliguen a escribir mi contraseña de github antes de compartirla con el mundo.

David Jeske
fuente
2

Las cosas son un poco diferentes si estás usando autenticación de 2 factores como yo. Como 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 2 factores, la especificación de nombre de usuario / contraseña no funcionará: se le denegará el acceso. Pero puede usar un token de acceso a la aplicación y usar el asistente de credenciales de git para almacenarlo en caché. Aquí están los enlaces pertinentes:

Y no recuerdo dónde vi esto, pero cuando le piden su nombre de usuario, ahí es donde pega el token de acceso a la aplicación. Luego deje la contraseña en blanco. Trabajó en mi mac.

John Berryman
fuente
2

usar SSH

Para evitar que GitHub solicite la contraseña mientras presiona, lo ideal es usar SSH ( [email protected]:...) en lugar de HTTPS URL ( https://github.com/...) y agregar su clave SSH a su cuenta de GitHub . Ver: ¿Qué URL remota debo usar?

GitHub - Clonar con SSH

un ayudante de credencial

De lo contrario, si realmente necesita usar HTTPS, para almacenar en caché su contraseña de GitHub en Git , debe usar un asistente de credenciales para decirle a Git que recuerde su nombre de usuario y contraseña de GitHub cada vez que habla con GitHub.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperes obligatorio),
  • Ventanas: git config --global credential.helper wincred
  • Linux y otros: git config --global credential.helper cache

.netrc

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

machine github.com
login USERNAME
password PASSWORD

OAuth

Use el token OAuth ( token de API personal ) para impulsar los cambios, por ejemplo

git push https://[email protected]/foo/bar

Relacionado:

kenorb
fuente
1

Además, si está utilizando Windows, puede usar:

$ git config --global credential.helper wincred

solo tienes que iniciar sesión una vez más y luego git lo recordará.

William Earl Cheaqui
fuente
1

Pedir el nombre de usuario es molesto para mí, pero pedir una contraseña es bueno, ya que garantiza que realmente quieras hacer públicos tus cambios ...

Así que solo agrego esto a mi ".gitconfig"

[url "https://[email protected]"]
    insteadOf = https://github.com
ViToni
fuente
0

Use Git Credential Manager para Windows , si está en Windows.

Este proyecto incluye :

  • Almacenamiento seguro de contraseñas en el Windows Credential Store
  • Soporte de autenticación multifactor para Visual Studio Team Services
  • Soporte de autenticación de dos factores para GitHub
  • Soporte de uso y generación de tokens de acceso personal para Visual Studio Team Services y GitHub
  • Soporte de modo no interactivo para Visual Studio Team Services respaldado por Azure Directory
  • Autenticación Kerberos para Team Foundation Server
  • Configuraciones opcionales para la optimización del agente de compilación

Simplemente descargue la última versión e instálela.

Cómo utilizar

Usted no Funciona mágicamente cuando se necesitan credenciales.

Jalal
fuente