usuario recordar password guardar credenciales contraseña configurar cambiar and authentication github git-push git-pull git-clone

authentication - recordar - Git push requiere nombre de usuario y contraseña



guardar credenciales git (19)

Autenticación permanente con repositorios Git,

Ejecute el siguiente comando para habilitar el 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://[email protected]'': <PASSWORD>

El uso también debe especificar caducidad de almacenamiento en caché ,

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

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

He clonado 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 desconectar de Github usando mi PC, se requiere un nombre de usuario y contraseña, ¡pero no cuando se usa la computadora portátil!

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


Acabo de encontrar el mismo problema, y ​​la solución más sencilla que encontré fue usar la URL de SSH en lugar de una de HTTPS:

ssh://[email protected]/username/repo.git

Y no esto:

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

Ahora puede validar solo con la SSH Key lugar del username de username y la password .


Además de cambiar a SSH, también puede seguir usando HTTPS, si no le importa poner su contraseña en texto claro. Ponga esto en su ~/.netrc y no le 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 quiera cifrar.

Otra adición (ver el comentario del usuario 137717) que puede usar si tiene git 1.7.10 o más reciente .

Guarda en caché tu contraseña de github en git usando un asistente de credenciales :

Si está clonando los repositorios de GitHub utilizando 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.

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


Aquí hay otra opción:

En lugar de escribir

git push origin HEAD

Podrías escribir:

git push https://user:[email protected]/path HEAD

Obviamente, con la mayoría de los shells, esto hará que la contraseña se guarde en caché en el historial, así que tenlo en cuenta.


Básicamente tienes dos opciones.

Si usa el mismo usuario en ambas máquinas, necesita copiar la clave .pub a su PC, por lo que github sabe que usted es el mismo usuario.

Si ha creado un nuevo archivo .pub para su PC y desea tratar a las máquinas como usuarios diferentes, debe registrar el nuevo archivo .pub en el sitio web de github.

Si esto todavía no funciona, es posible que ssh no esté configurado correctamente y que ssh no encuentre la ubicación de sus claves. Tratar

ssh -vv [email protected]

Para obtener más información por qué SSH falla.


Como muchos usuarios han dicho, solo tienes que cambiar la URL de tu repositorio git de https a SSH.

Si no ha generado una clave SSH en su máquina, entonces tendrá que hacerlo.

Solo como información adicional, después de hacer este cambio, seguía recibiendo el mismo error: Permiso denegado.

En mi caso, el problema era que estaba usando el Shell de Windows para ejecutar el comando ngh; ya que este comando debe abrir un mensaje para solicitar la frase SSH y el Shell de Windows no abre este tipo de mensajes, la autenticación acaba de fallar.

Entonces, solo tuve que abrir el shell git y ejecutar el comando ngh allí, poner la frase SSH en el indicador cada vez que lo pedía y "voilà" ... ¡Simplemente funcionó bien!


Cuando use https para git pull & push, simplemente configure remote.origin.url para su proyecto, para evitar el ingreso de nombre de usuario (o contraseña) cada vez que presione.

Cómo configurar remote.origin.url :

Url format: https://{username:password@}github.com/{owner}/{repo} Parameters in url: * username optional, the username to use when need authentication, if specified, no need to enter username again when need authentication, don''t use email, use your username that has no "@", otherwise the url can''t be parsed correctly, * password optional, the password to use when need authentication, if specified, no need to enter password again when need authentication, tip: this value is stored as plain text, so for security concern, don''t specify this param, * e.g git config remote.origin.url https://[email protected]/eric/myproject

@Actualizar - usando ssh

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

Pasos ásperos:

  • Cree claves ssh usando el comando, por ejemplo, ssh-keygen en linux, en windows msysgit proporcione comandos similares.
  • Mantenga la clave privada en la máquina local en la ubicación correcta, por ejemplo, ~/.ssh . Y agréguelo al agente ssh-add mediante el comando ssh-add .
  • Sube la clave pública al servidor git.
  • Cambie remote.origin.url del repositorio git al estilo ssh , por ejemplo, [email protected]:myaccount/myrepo.git
  • Luego, cuando tire o presione, no tendrá que ingresar el nombre de usuario ni la contraseña.

Consejos:

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

@Actualizar - Cambiar entre https y ssh protocol.

Simplemente cambiar 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 comento uno de ellos usando # .

p.ej

[remote "origin"] url = [email protected]:myaccount/myrepo.git # url = https://[email protected]/myaccount/myrepo.git fetch = +refs/heads/*:refs/remotes/origin/*


Fuente: Configuración de Git

El siguiente comando guardará su contraseña en la memoria por algún tiempo.
(Para git 1.7.10 o más reciente.)

$ 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)


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

[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 en los que esto puede no ser un problema.


Necesitas realizar 2 pasos -

1) git remote remove origin 2) git remote add origin [email protected]:NuggetAI/nugget.git

Tenga en cuenta que la url de git es una url ssh y no una url https .. La cual puede seleccionar desde aquí.


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

git remote -v

que responderá algo así como

origin https://[email protected]/yourname/yourrepo.git (fetch) origin https://[email protected]/yourname/yourrepo.git (push)

luego puede ejecutar el comando que muchos otros han sugerido, pero ahora sabe su nombre y su nombre de arriba, así que solo puede cortar y pegar su yourname/yourrepo.git desde arriba en

git remote set-url origin [email protected]:yourname/yourrepo.git


Para los usuarios de Windows git, después de ejecutar git config --global credential.helper store , si todavía solicita una contraseña, es mejor que compruebe dónde se escribe la configuración. usando este comando

git config --list --show-origin

En mi caso, edite manualmente el archivo de configuración ''C: / Archivos de programa / Git / mingw64 / etc / gitconfig'', agregando el siguiente texto, funciona.

[credential] helper = store


Puedes guardar tu contraseña de GitHub en Git:

Solo sigue las instrucciones de la documentación oficial del github.

Después de seguir las instrucciones del enlace anterior, debe poder presionar / jalar a / desde su repositorio sin tener que escribir su nombre de usuario / contraseña cada vez.


Si está usando ssh y su clave privada está encriptada con una frase de contraseña, entonces se le solicitará que ingrese la contraseña / contraseña para la clave privada cuando realice operaciones de red con Git como push , pull y fetch .

Use ssh-agent para guardar las contraseñas de contraseña privada / credenciales de contraseña

Si desea evitar tener que ingresar su frase de contraseña cada vez, puede usar ssh-agent para almacenar sus credenciales de contraseña de contraseña 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 un Windows msysgit Bash, debe evaluar la salida de ssh-agent , pero no estoy seguro de si necesita hacer lo mismo en otros entornos de desarrollo y sistemas operativos.

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

Matando al agente

Cuando haya terminado con su sesión de terminal, puede cerrar ssh-agent con el indicador de eliminación -k :

$ ssh-agent -k

Como se explica en el manual de ssh-agent :

-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 de tiempo de espera opcional así:

$ ssh-add -t <timeout>

donde <timeout> tiene el formato <n>h durante <n> horas, <n>m durante <n> minutos, etc.

Según el manual de ssh-agent :

-t life

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

Vea esta página para más formatos de tiempo .

Advertencia de seguridad para los usuarios de Cygwin

Los usuarios de Cygwin deben estar conscientes de un posible riesgo de seguridad con el uso de ssh-agent en Cygwin :

la gente debe ser consciente de los peligros potenciales de ssh-agent bajo cygwin [1], aunque bajo un netstat local y un portscan remoto, no parece que el puerto especificado en / tmp / ssh-foo sea accesible para nadie ...

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

Y en el enlace citado :

sin embargo, tenga en cuenta que los sockets de dominio Unix de cygwin son FUNDAMENTALMENTE INSEGUROS, por lo que DESCUBRIMO el uso de ssh-agent en cygwin.

cuando ejecuta ssh-agent en cygwin, crea el socket AF_UNIX en el directorio /tmp/ssh-$USERNAME/ . bajo cygwin, los conectores AF_UNIX se emulan a través de los conectores AF_INET. puede ver fácilmente que si mira el archivo /tmp/ssh-$USERNAME/agent-socket-* través del bloc de notas. verás algo así como

!<socket >2080

A continuación, ejecute netstat -a y sorpresa! Tienes algún programa escuchando el puerto 2080. Es ssh-agent. cuando ssh recibe el desafío RSA del servidor, se refiere a /tmp/ssh-$USERNAME/agent-socket-* (en cygwin, en nuestro caso, eso significa que abrirá la conexión a localhost:2080 ) y pregunta a ssh-agent para procesar el desafío RSA con la clave privada que tiene, y luego simplemente pasa la respuesta recibida de ssh-agent al servidor.

bajo unix, tal escenario funciona sin problemas, porque el kernel de unix comprueba los permisos cuando el programa intenta acceder al socket AF_UNIX. Para los sockets AF_INET, sin embargo, las conexiones son anónimas (lea "inseguro"). Imagina que tienes cygwin ssh-agent corriendo. el pirata informático malintencionado puede abrir su caja, localizar el puerto abierto utilizado por ssh-agent, abrir la conexión a su servidor ssh, recibir el desafío RSA, enviarlo a su agente ssh a través del puerto abierto que encontró, recibir respuesta RSA, enviarlo a ssh server y voila, ha iniciado sesión correctamente en su servidor como usted.



Si la clave ssh o .netrc no funcionaron para usted, entonces otra solución simple pero menos segura que podría funcionar para usted es git-credential-store - Helper para almacenar credenciales en el disco.

git config --global credential.helper store

Por defecto, las credenciales se guardarán en ~/.git-credentials . Será creado y escrito para.

Tenga en cuenta que el uso de este asistente almacenará sus contraseñas sin cifrar en el disco, protegidas únicamente por los permisos del sistema de archivos. Si esto no puede ser una compensación de seguridad aceptable.


Tuve el mismo problema

así que cambia el archivo .git / config de mi proyecto

url = https://github.com/<your-user-here>/<your-repo-here>

a

url = [email protected]:<your-user-here>/<your-repo-here>

y agregue la clave pública ssh al perfil de git que está en configuración.

para la clave pública ssh

cat ~/.ssh/id_rsa.pub


Un error común es la clonación 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 de la URL y actualizando la URL de su origen en forma remota:

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

Esto se documenta en GitHub: Cambio de URL remotas de HTTPS a SSH .


Actualización para HTTPS:

Github ha lanzado un nuevo programa para Windows que almacena sus credenciales cuando está usando HTTPS:

Usar:

Descarga el programa desde here

Una vez que ejecute el programa, editará su archivo .gitconfig . Vuelva a .gitconfig si editó el .gitconfig correcto en caso de que tenga varios de ellos. Si no editó la correcta, agregue lo siguiente a su .gitconfig

[credential] helper = !''C://Path//To//Your//Downloaded//File//git-credential-winstore.exe''

NOTA el salto de línea después de [credential] . Es requerido.

Abre tu línea de comandos del cliente e intenta git push origin master una vez. Si te pide una contraseña, ingrésala y estás listo. Contraseña guardada!