He estado usando Git por un tiempo, pero las constantes solicitudes de contraseña están empezando a llevarme a la pared.
Estoy usando Mac OS X y GitHub, y configuré Git y mis claves SSH según las instrucciones de la página Configurar Git de GitHub .
También agregué la clave SSH de github a mi llavero Mac OS X, como se menciona en la página de frases clave de SSH de GitHub . Mi clave pública está registrada con Git.
Sin embargo, cada vez que intento Git pull, tengo que ingresar mi nombre de usuario y contraseña. ¿Hay algo más que una clave SSH que deba configurar para esto?
netrc
'. Vea un ejemplo completo aquí .Respuestas:
Creo que puede tener la URL de repositorio Git incorrecta.
Abra
.git/config
y busque la sección ["origen" remoto]. Asegúrese de estar usando el SSH:Puede ver la URL SSH en la página principal de su repositorio si hace clic en Clonar o descarga y elige ssh .
Y NO el
https
ogit
uno:Ahora puede validar solo con la clave SSH en lugar del nombre de usuario y la contraseña.
Si Git se queja de eso
'origin' has already been added
, abra el.config
archivo y edite laurl = "..."
parte después[remote origin]
comourl = ssh://github/username/repo.git
Lo mismo aplica para otros servicios. Asegúrese de que la dirección se vea así:
protocol://something@url
Por ejemplo,
.git/config
para Azure DevOps:fuente
[remote "origin"]
conjunto de seccionesurl = ssh://[email protected]/username/Repo.git
. Eso funcionó para mí.url = [email protected]:organization/Repo.git
funcionó. ¡+1 por guiarme por el camino correcto! ¡Éxito!Configurar credential.helper
En OS X (ahora macOS), ejecute esto en Terminal :
Le permite a Git usar el archivo Keychain.app para almacenar nombre de usuario y contraseña y recuperar la frase de contraseña a su clave SSH privada del llavero.
Para uso de Windows:
Solución de problemas
Si el asistente de credenciales de Git está configurado correctamente, macOS guarda la frase de contraseña en el llavero. A veces, la conexión entre SSH y las frases de contraseña almacenadas en el llavero puede romperse. Correr
ssh-add -K
ossh-add ~/.ssh/id_rsa
para agregar la clave al llavero nuevamente.macOS v10.12 (Sierra) cambia a ssh
Para macOS v10.12 (Sierra),
ssh-add -K
debe ejecutarse después de cada reinicio. Para evitar esto, cree~/.ssh/config
con este contenido.Desde la
ssh_config
man
página del 10.12.2:Apple ha agregado Technote 2449 que explica lo que sucedió.
fuente
.netrc
método de archivo que pone su contraseña en texto sin formato.'credential-osxkeychain' is not a git command.
porque no tenía instalado el credencial auxiliar. Seguí las instrucciones aquí para instalarlo: help.github.com/articles/set-up-git#password-cachinggit config --global credential.helper osxkeychain
El archivo de configuración en mi.ssh
directorio me arregló.Esto me sucedió cuando actualicé a macOS v10.12 (Sierra). Parece que el agente SSH se despejó al actualizar.
Simplemente ejecutando
ssh-add
mi identidad existente. Ingresé la contraseña y estaba listo para volver.fuente
Use esto: reemplace github.com con el nombre de host apropiado
fuente
git remote -v
. Sin embargo, todavía se me solicita la contraseña.git@**
no solicite credenciales y la URL conhttps@**
sí :). Así encontré este documento .Como han dicho otros, puede instalar una contraseña de caché auxiliar. Principalmente solo quería publicar el enlace para otras plataformas, y no solo para Mac. Estoy ejecutando un servidor Linux y esto fue útil: almacenamiento en caché de su contraseña de GitHub en Git
Para Mac:
Ventanas:
Linux:
fuente
También busque quién le está pidiendo la frase de contraseña. ¿Es Git o tu agente de SSH?
En mi caso, cada vez que
git pull
lo hacía me preguntaba:Enter passphrase for key '/work/username/.ssh/id_rsa':
Así que supuse que era Git pidiendo una frase de contraseña. Así que seguí buscando soluciones, solo para darme cuenta más tarde de que mi agente SSH había cerrado. Que se puede solucionar usando
eval $(ssh-agent)
yssh-add
como se indica aquí.También estoy pegando un pequeño fragmento que puedes agregar a tu
~/.bashrc
archivo (o el equivalente) para asegurarse de que su agente SSH se inicie en su inicio de sesión.En cualquier caso, este fue un error bastante tonto que cometí, pero publicarlo aquí, en caso de que ayude a alguien a ahorrar tiempo de ladrar al árbol equivocado, como lo hice yo.
fuente
SSH_ENV="$HOME/.ssh/environment"
Nota: Si bien esto es conveniente, Git almacenará sus credenciales en texto sin cifrar en un archivo local (.git-credentials) en el directorio de su proyecto (consulte a continuación el directorio "home"). 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:
Para almacenar las contraseñas en credenciales .git en su directorio% HOME% en lugar del directorio del proyecto: use el indicador --global
fuente
Guía de Git en Windows y GitHub usando SSH para empujar / tirar: una guía ilustrada de Git en Windows
fuente
En Windows para Git 1.7.9+, ejecute el siguiente comando en el símbolo del sistema para abrir el archivo de configuración en un editor de texto:
Luego, en el archivo, agregue el siguiente bloque si no está presente o edítelo en consecuencia:
Guarde y cierre el archivo. Deberá proporcionar las credenciales solo una vez después del cambio anterior.
fuente
Use el siguiente comando para aumentar el tiempo de espera para poder volver a escribir la contraseña por un tiempo
Lo usé para Bitbucket y GitHub, funciona para ambos. Lo único que debes hacer
3600
es en segundos. Aumenta todo lo que quieras. Lo cambié a259200
unos 30 días. De esta manera, vuelvo a ingresar mi contraseña cada 30 días aproximadamente.fuente
Supongo que resolvió su problema, pero no veo la solución aquí que me ayudó, así que aquí está.
Escriba en la terminal:
Eso vaciará su
known_hosts
archivo, y tendrá que agregar todos los hosts que utilizó y con los que se conectó, pero resolvió el problema.fuente
cat /dev/null > ~/.ssh/known_hosts
Hará lo mismo.> ~/.ssh/known_hosts
es aún más corto :)Siento que la respuesta proporcionada por static_rtti es hacky en algún sentido. No sé si esto estaba disponible antes, pero las herramientas de Git ahora proporcionan almacenamiento de credenciales.
Modo de caché
Utilice el modo "caché" para mantener las credenciales en la memoria durante un cierto período de tiempo. Ninguna de las contraseñas se almacena en el disco y se eliminan de la memoria caché después de 15 minutos.
Modo de tienda
Utilice el modo "almacenar" para guardar las credenciales en un archivo de texto sin formato en el disco y nunca caducarán.
Yo personalmente usé el modo de tienda . Eliminé mi repositorio, lo cloné y luego tuve que ingresar mis credenciales una vez.
Referencia: 7.14 Herramientas Git - Almacenamiento de credenciales
fuente
credential.helper cache
NO funciona. Debería sergit config --global credential.helper wincred
.git config --local credential.helper store
. En mi caso, superé HTTPS, de esta manera solo escribo nombre de usuario / contraseña una vez y después de eso, mis credenciales se reutilizan de ~ / .git-credentialsLa respuesta de orkoden sobre el uso del llavero con Git en su terminal fue incompleta y genera errores. Esto es lo que debe hacer para guardar el nombre de usuario y la contraseña que ingresa en el terminal en su llavero:
Luego ingrese
Si ya ha realizado la parte con la configuración de Git antes del material curl, no hay problema; Funcionará.
fuente
Como static_rtti dijo anteriormente, cambie
a
Yo mismo cambié el
https
archivo .git / config assh
, pero todavía no funcionaba. Entonces vi que debes cambiargithub.com
a[email protected]
. Una buena manera de obtener la URL correcta real es ir a la página de su proyecto y hacer clic en esto:Cambie HTTPS a SSH para obtener la URL correcta
Luego agregue esta URL al archivo de configuración.
fuente
En el Subsistema de Windows para Linux (WSL), esta fue la única solución que encontré que funcionaba:
eval
`ssh-agent`; ssh-add ~/.ssh/id_rsa
Era un problema con el agente ssh no registrado correctamente en WSL.
fuente
Si quiere evitar que Git le pida siempre las credenciales de inicio de sesión de su repositorio de GitHub, puede hacerlo fácilmente.
Usando SSH en lugar de HTTPS
Puede actualizar el origen remoto utilizando SSH en lugar de HTTPS "
Configure Git para almacenar su contraseña y nombre de usuario
Así es como puede hacer que Git almacene el nombre de usuario y la contraseña:
A continuación, guarde el nombre de usuario y la contraseña para una sesión:
fuente
Estoy de acuerdo con "codehugger" y usando las instrucciones de "orkoden" funcionó para mí - en NetBeans 7.3 - cuando haces clic derecho en el archivo y seleccionas el menú contextual - presiona - se abrió una ventana de 'empujar al control remoto' - hay dos opciones aquí:
origin:https://github.com/myaccount/myproject.git/
https://github.com/myaccount/myproject.git/
Como puede ver, la diferencia es el parámetro de origen en la URL: no desea elegir esta opción (1), desea marcar la opción (2), y eso funciona bien para mí.
fuente
Paso 1: verifique su configuración actual
Conseguirás:
Paso 2: elimina tu origen remoto
Paso 3: agregue el origen remoto de nuevo con su nombre de usuario y contraseña
fuente
git branch --set-upstream master origin/master
Si Git le solicita un nombre de usuario y una contraseña cada vez que intenta interactuar con GitHub, probablemente esté utilizando la URL de clonación HTTPS para su repositorio.
El uso de una URL remota HTTPS tiene algunas ventajas: es más fácil de configurar que SSH, y generalmente funciona a través de servidores de seguridad y servidores proxy estrictos. Sin embargo, también le solicita que ingrese sus credenciales de GitHub cada vez que extrae o empuja un repositorio.
Puede configurar Git para almacenar su contraseña por usted. Para Windows :
fuente
Al ejecutar macOS Cataline 10.15, el método de almacenamiento en caché de llavero no funcionaba para mí. Y quería utilizar
https://
nossh
Esto es lo que funcionó para mí:
Esto también debería funcionar en GitLab
Asegúrese de que si el nombre de usuario contiene una dirección de correo electrónico, para eliminar la
@email
parte o obtendrá un error que indicaURL using bad/illegal format or missing URL
.¡Espero que esto ayude!
fuente
Existen diferentes tipos de autenticaciones según su configuración. Aquí hay algunos:
git credential-osxkeychain
.Si su credencial no es válida, elimínela:
o:
Entonces Git no te pedirá el permiso del llavero nuevamente. Luego configúrelo nuevamente.
Ver: Actualización de credenciales del llavero OS X en GitHub
Su clave SSH RSA.
Para esto, debe comparar su clave SSH con lo que ha agregado, verifique
ssh-add -L
/ssh-add -l
si está utilizando la identidad correcta.Su autenticación HTTPS (si está usando en
https
lugar dessh
protocolo).Use
~/.netrc
(%HOME%/_netrc
en Windows) para proporcionar sus credenciales, p. Ej.Más información: Sincronización con GitHub en Stack Overflow.
fuente
Antes de que pueda usar su clave con GitHub, siga este paso en el tutorial, Prueba de su conexión SSH :
fuente
Tener un error tipográfico en la URL hará que Git le pida nombre de usuario y contraseña, estúpido Git.
Fue probado en Kali Linux , Git versión 2.7.0,
Tratar:
fuente
Si está utilizando Windows y esto repentinamente comenzó a suceder de la nada en GitHub, probablemente se deba al reciente soporte de desactivación de GitHub para algoritmos criptográficos obsoletos en 2018-02-22, en cuyo caso la solución es simplemente descargar e instalar la última versión de Git completo para Windows o solo Git Credential Manager para Windows .
fuente
Solución Microsoft Stack (Windows y Azure DevOps)
Primero abra el
.git/config
archivo para asegurarse de que la dirección se vea así:Por ejemplo .git / config para Azure DevOps:
Si el problema persiste, abra Windows Credential Manager , haga clic en la caja fuerte llamada Windows Credentials y elimine todas las credenciales relacionadas con git.
Ahora, la próxima vez que inicies sesión en git, ya no desaparecerá.
fuente
Si tiene configurado el agente SSH, también puede agregarlo a su
~/.gitconfig
para forzar a git a usar SSH para todos los repositorios de GitHub en lugar de HTTPS:(Si trabaja principalmente con repositorios públicos, también puede usarlos en
pushInsteadOf
lugar de hacerloinsteadOf
, ya que la lectura de un repositorio público puede realizarse sin autenticación).fuente