Pregunta Git push requiere nombre de usuario y contraseña


Cloné un repositorio de git desde mi cuenta de Github a mi PC.

Quiero trabajar tanto con mi PC como con mi computadora portátil, pero con una sola cuenta de Github.

Cuando intento presionar o retirar desde Github utilizando mi PC, requiere nombre de usuario y contraseña, ¡pero no cuando uso la computadora portátil!

No quiero escribir mi nombre de usuario y contraseña cada vez que interactúo con el origen. ¿Qué me falta aquí?


1069
2017-07-03 20:25


origen


Respuestas:


Un error común es clonar utilizando el valor predeterminado (HTTPS) en lugar de SSH. Puede corregir esto yendo a su repositorio, haciendo clic en "Clonar o descargar", luego haciendo clic en el botón "Usar SSH" sobre el campo URL y actualizando la URL de su control remoto de origen de la siguiente manera:

git remote set-url origin git@github.com:username/repo.git

Esto está documentado en GitHub: Conmutación de URL remotas de HTTPS a SSH.


1579
2017-07-03 21:25



Autenticación permanente con repositorios de Git,

Ejecute el siguiente comando para habilitar almacenamiento en caché de credenciales:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

El uso también debe especificar caché caduca,

git config --global credential.helper 'cache --timeout 7200'

Después de habilitar el almacenamiento en caché de credenciales, se almacenará en caché 7200 segundos (2 horas).


172
2018-02-17 13:30



Me encontré con el mismo problema, y ​​la solución más simple que encontré fue usar SSH URL en lugar de HTTPS uno:

ssh://git@github.com/username/repo.git

Y no esto:

https://github.com/username/repo.git

Ahora puede validar con sólo el SSH Key en vez de username y password.


109
2018-06-14 07:19



Además de cambiar a SSH también puede seguir utilizando HTTPS, si no le importa poner su contraseña en texto claro. Pon esto en tu ~/.netrc y no pedirá su nombre de usuario / contraseña (al menos en Linux y Mac):

machine github.com
       login <user>
       password <password>

Adición (vea el segundo comentario de VonC): en Windows, el nombre del archivo es %HOME%\_netrc.

Lea también el primer comentario de VonC en caso de que desee encriptar.

Otra adición (vea el comentario del usuario137717) que puede usar si tiene git 1.7.10 o más nuevo.

Guarde en caché su contraseña de github en git usando un asistente de credenciales :

Si está clonando repositorios de GitHub usando HTTPS, puede usar un   asistente de credenciales para decirle a Git que recuerde su nombre de usuario y GitHub   contraseña cada vez que habla con GitHub.

Esto también funciona en Linux, Mac y Windows.


105
2018-01-19 19:08



Para los no iniciados que están confundidos por las respuestas anteriores, puede hacer:

git remote -v

que responderá algo así como

origin  https://yourname@github.com/yourname/yourrepo.git (fetch)
origin  https://yourname@github.com/yourname/yourrepo.git (push)

entonces puedes ejecutar el comando que muchos otros han sugerido, pero ahora conoces tu nombre y tu recuerdo desde arriba, así que puedes cortar y pegar yourname/yourrepo.git desde arriba a

git remote set-url origin git@github.com:yourname/yourrepo.git

69
2018-02-13 17:22



Si está utilizando ssh y su clave privada está encriptada con una frase de contraseña, entonces aún se le pedirá que ingrese la contraseña / contraseña de la clave privada cuando realice operaciones de red con Git me gusta push, pully fetch.

Utilice ssh-agent para guardar credenciales de contraseñas / contraseñas de claves privadas

Si quiere evitar tener que ingresar su frase de contraseña cada vez, puede usar ssh-agent para almacenar sus credenciales de contraseña de clave privada una vez por sesión de terminal, como explico en mi respuesta a No se pudo abrir una conexión con su agente de autenticación:

$ eval `ssh-agent -s`
$ ssh-add

En Windows msysgit Bash, necesita evaluar el resultado de ssh-agent, pero no estoy seguro si necesita hacer lo mismo en otros entornos de desarrollo y sistemas operativos.

ssh-add busca una clave privada en su hogar .ssh carpeta llamada id_rsa, que es el nombre predeterminado, pero puede pasar una ruta de archivo a una clave con un nombre diferente.

Asesinando al agente

Cuando haya terminado con su sesión de terminal, puede cerrar ssh-agent con la bandera de matar -k:

$ ssh-agent -k

Como se explica en el ssh-agent manual:

-k

Mata al agente actual (dado por la variable de entorno SSH_AGENT_PID).

Tiempo de espera opcional

Además, puede tomar un parámetro opcional de tiempo de espera así:

$ ssh-add -t <timeout>

dónde <timeout> es del formato <n>h para <n> horas, <n>m para <n> minutos, y así sucesivamente.

De acuerdo con la ssh-agent manual:

-t life

Establezca un valor predeterminado para la vida útil máxima de las identidades añadidas   al agente. La vida útil puede especificarse en segundos o en un   formato de hora especificado en sshd_config (5). Una vida especificada   para una identidad con ssh-add (1) anula este valor. Sin   esta opción, la duración máxima predeterminada es para siempre.

Consulte esta página para obtener más formatos de tiempo.

Advertencia de seguridad para usuarios de Cygwin

Los usuarios de Cygwin deben conocer una riesgo de seguridad potencial con el uso de ssh-agent en Cygwin:

la gente debe ser consciente de la   peligros potenciales de ssh-agent bajo cygwin [1], aunque bajo un   netstat y portscan remotos no parece que el puerto especificado en   / tmp / ssh-foo es accesible para cualquiera ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

Y en el enlace citado:

Sin embargo, tenga en cuenta que los zócalos de dominio unix de cygwin son FUNDAMENTALMENTE   INSEGURO  y entonces yo fuertemente DESALENTAR uso de ssh-agent en   cygwin.

cuando ejecuta ssh-agent en cygwin crea socket AF_UNIX en    /tmp/ssh-$USERNAME/  directorio. debajo de los zócalos cygwin AF_UNIX están   emulado a través de sockets AF_INET. puedes verlo fácilmente si miras   dentro /tmp/ssh-$USERNAME/agent-socket-*  archivo a través de bloc de notas. verás   algo como

!<socket >2080

entonces corre netstat -a y sorpresa! tienes algún programa escuchando   puerto 2080. es ssh-agent. cuando ssh recibe el desafío RSA de   servidor, se refiere a /tmp/ssh-$USERNAME/agent-socket-*   (Bajo cygwin, en nuestro caso, eso significa que abrirá la conexión a    localhost:2080) y le pide a ssh-agent que procese el desafío RSA con   clave privada que tiene, y luego simplemente pasa la respuesta recibida de   ssh-agent al servidor.

bajo Unix, tal escenario funciona sin problemas, porque kernel de Unix   comprueba los permisos cuando el programa intenta acceder al socket AF_UNIX. por   Enchufes AF_INET, sin embargo, las conexiones son anónimas (leer   "inseguro"). Imagina que tienes cygwin ssh-agent ejecutándose.   un pirata informático malintencionado puede hacer un escaneo en su caja, localizar el puerto abierto utilizado por   ssh-agent, conexión abierta a su servidor ssh, reciba el desafío RSA   de ella, envíela a su agente ssh a través del puerto abierto que encontró, reciba RSA   respuesta, envíela al servidor ssh y listo, inició sesión con éxito   a tu servidor como tú.


48
2017-08-21 02:54



Fuente: Configurar Git

El siguiente comando guardará su contraseña en la memoria por algún tiempo.
  (Por git 1.7.10 o mas nuevo.)

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

41
2017-09-01 02:55



Cuando usas https para git pull & push, solo config remote.origin.url para su proyecto, para evitar el ingreso de nombre de usuario (y / o contraseña) cada vez que presione.

Cómo configurar remote.origin.url:

Formato de URL:
    https: // {nombre de usuario: contraseña @} github.com/ {propietario} / {repo}

Parámetros en url:
* nombre de usuario
    opcional, el nombre de usuario a usar cuando se necesita autenticación,
    si se especifica, no es necesario ingresar el nombre de usuario nuevamente cuando necesite autenticación,
    no use el correo electrónico, use su nombre de usuario que no tenga "@", de lo contrario, la URL no se puede analizar correctamente,
* contraseña
    opcional, la contraseña para usar cuando se necesita autenticación,
    si se especifica, no es necesario ingresar la contraseña nuevamente cuando necesite autenticación,
    propina:
        este valor se almacena como texto sin formato, por lo que para cuestiones de seguridad, no especifique este parámetro,
*

p.ej
    git config remote.origin.url https: //eric@github.com/eric/myproject


@Update - usando ssh

Creo que usando ssh protocolo es una mejor solución que https, aunque el paso de configuración es un poco más complejo.

Pasos bruscos:

  • Crear claves ssh usando el comando, ej. ssh-keygen en linux, en windows msysgit proporcionar comandos similares.
  • Mantenga la clave privada en la máquina local en la ubicación adecuada, por ejemplo ~/.ssh. Y añádalo al agente ssh a través de ssh-add mando.
  • Suba la clave pública al servidor git.
  • Cambio remote.origin.url del repositorio git a ssh estilo, por ejemplo git@gitlab.com:myaccount/myrepo.git
  • Luego, al tirar o empujar, no es necesario ingresar el nombre de usuario o la contraseña.

Consejos:

  • Si su clave ssh tiene una frase de contraseña, entonces debe ingresarla en el primer uso de la clave después de cada reinicio de su máquina, de forma predeterminada.

@Update - Cambiar entre https y ssh protocolo.

Simplemente cambia remote.origin.url será suficiente, o puede editar repo_home/.git/config directamente para cambiar el valor (por ejemplo, usando vi en linux).

Por lo general, agrego una línea para cada protocolo y hago un comentario sobre uno de ellos usando #.

p.ej

["origen" remoto]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        fetch = + refs / heads / *: refs / remotos / origen / *

28
2017-12-25 15:42



Puedes guardar en caché tu contraseña de GitHub en Git:

Solo sigue las instrucciones del github documentación oficial.

Después de seguir las instrucciones del enlace de arriba, podrá empujar / tirar hacia / desde su repositorio sin tener que escribir su nombre de usuario / contraseña cada vez.


15
2017-12-19 05:29



Lo que funcionó para mí fue editar .git/config y use

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

No hace falta decir que esta es una forma insegura de almacenar su contraseña, pero hay entornos / casos donde esto puede no ser un problema.


5
2017-07-31 18:25