practices - Git me sigue pidiendo contraseña
git tag commits (21)
He estado usando Git por un tiempo, pero las solicitudes constantes de una contraseña están empezando a hacerme subir por el muro.
Estoy usando OSX y Github, y configuro Git y mis claves SSH según las instrucciones de la página de configuración de GitHub. También agregué la clave SSH de github a mi llavero de Mac OSX, como se menciona en la página de frases de contraseña de SSH de GitHub . Mi clave pública está registrada en Git.
Sin embargo, cada vez que trato de hacer git pull, debo ingresar mi nombre de usuario y contraseña. ¿Hay algo más que una clave SSH que necesito configurar para esto?
Configurando credential.helper
En OS X (ahora macOS) ejecuta esto en la Terminal
git config --global credential.helper osxkeychain
Permite que git use Keychain.app para almacenar el nombre de usuario y la contraseña y para recuperar la frase de acceso a su clave privada ssh desde el llavero.
Para uso de ventanas:
git config --global credential.helper wincred
Solución de problemas
Si el asistente de credenciales de git está configurado correctamente, macOS guarda la contraseña en el llavero. A veces, la conexión entre ssh y las frases de contraseña almacenadas en el llavero se puede romper. Ejecute ssh-add -K
o ssh-add ~/.ssh/id_rsa
para ssh-add ~/.ssh/id_rsa
a agregar la clave al llavero.
macOS 10.12 Sierra cambia a ssh
Para macOS 10.12, Sierra ssh-add -K
debe ejecutarse después de cada reinicio. Para evitar esto, cree ~/.ssh/config
con este contenido.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Desde la página del manual de ssh_config en 10.12.2:
UseKeychain
En macOS, especifica si el sistema debe buscar frases de contraseña en el llavero del usuario cuando intenta usar una clave en particular. Cuando el usuario proporciona la frase de contraseña, esta opción también especifica si la frase de contraseña debe almacenarse en el llavero una vez que se haya verificado que es correcta. El argumento debe ser ''sí'' o ''no''. El valor predeterminado es ''no''.
Apple ha agregado Technote 2449 que explica lo que sucedió.
Antes de macOS Sierra, ssh presentaría un diálogo solicitando su frase de contraseña y le ofrecería la opción de almacenarla en el llavero. Esta interfaz de usuario fue obsoleta hace algún tiempo y se ha eliminado.
Antes de que pueda usar su clave con github, siga este paso en el tutorial Cómo probar su conexión SSH :
$ ssh -T [email protected]
# Attempts to ssh to GitHub
Como han dicho otros, puede instalar un ayudante de caché de contraseña. Principalmente solo quería publicar el enlace para otras plataformas, y no solo para mac. Estoy ejecutando un servidor linux y esto fue útil: https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux
Para Mac:
git credential-osxkeychain
Windows:
git config --global credential.helper wincred
Linux:
git config --global credential.helper cache
git config --global credential.helper ''cache --timeout=3600''
# Set the cache to timeout after 1 hour (setting is in seconds)
Como static_rtti dijo anteriormente, cambiar
https://github.com/username/repo.git
git://github.com/username/repo.git
a
ssh://[email protected]/username/repo.git
Yo mismo cambié el https en el archivo .git / config a ssh, pero todavía no estaba funcionando. Entonces vi que DEBE cambiar github.com a [email protected]. Una buena manera de obtener la url correcta real es ir a la página del proyecto y hacer clic en este
Cambie HTTPS a SSH para obtener la URL correcta
Luego agregue esta URL al archivo de configuración.
Creo que puedes tener la url de git repo incorrecta.
Abra .git/config
y busque la sección ["origen" remoto]. Asegúrese de que está utilizando el SSH
one:
ssh://[email protected]/username/repo.git
Y NO el https
o git
one:
https://github.com/username/repo.git
git://github.com/username/repo.git
Ahora puede validar solo con la SSH Key
lugar del username
de username
y la password
.
[Editar:] Si Git se queja de que ''origin'' has already been added
, abra el archivo .config
y edite la parte url = "..."
después de [remote origin]
como url = ssh://github/username/repo.git
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 el editor de texto:
git config --global --edit
Luego, en el archivo, agregue el siguiente bloque si no está presente o edítelo en consecuencia
[credential "https://giturl.com"]
username = <user id>
helper = wincred
Guarde y cierre el archivo. Deberá proporcionar las críticas solo una vez después del cambio anterior.
Esto me sucedió cuando actualicé macOS Sierra. Parece que el agente ssh se borró en la actualización.
$ ssh-add -L
The agent has no identities.
Simplemente ejecutando ssh-add
localicé mi identidad existente, ingresé la contraseña y estoy listo para continuar.
Estoy de acuerdo con "codehugger" y siguiendo las instrucciones de "orkoden" funcionó para mí - en netbeans 7.3 - cuando hace clic con el botón derecho en el archivo y selecciona el menú contextual - presione - se abre una ventana ''enviar al remoto'' - hay 2 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 quiere elegir esta opción (1) que desea marcar (2) y eso funciona bien para mí. Espero que esto ayude a alguien.
Dung Le.
Existen diferentes tipos de autenticaciones dependiendo de su configuración. Aquí hay algunos:
git credential-osxkeychain
.Si su credencial no es válida, elimínela mediante:
git credential-osxkeychain erase
o:
printf "protocol=https/nhost=github.com/n" | git credential-osxkeychain erase
Así que Git no te pedirá el permiso de llavero de nuevo. Entonces configúralo de nuevo.
Ver: Actualización de credenciales del llavero OSX en GitHub
Su clave SSH RSA.
Para esto, necesita comparar su clave SSH con lo que ha agregado, verifique mediante
ssh-add -L
/ssh-add -l
si está usando la identidad correcta.Su autenticación HTTPS (si está utilizando
https
lugar del protocolossh
).Utilice
~/.netrc
(%HOME%/_netrc
en Windows) para proporcionar sus credenciales, por ejemplo,machine stash1.mycompany.com login myusername password mypassword
Más información: Sincronización con GitHub en SO
Guía para git en windows y Github usando SSH para empujar / jalar http://nathanj.github.io/gitguide/tour.html
- Descargar e instalar masilla
- Establezca la variable de entorno ''GIT_SSH'' = ''ruta / a / plink.exe'' (en la carpeta de masilla instalada) - ¡MUY IMPORTANTE!
- REINICIE WINDOWS EXPLORER para que las Variables Env tengan efecto (no solo se puede reiniciar el símbolo del sistema)
- Ejecute puttygen.exe para generar una nueva clave, copie la clave PUBLIC en el sitio de Github
- Guarde esta nueva clave PRIVADA en algún lugar seguro en el disco (preferiblemente no dropbox)
- Ejecute putty.exe y conecte SSH a github.co
- Acceda rápidamente a la carpeta de inicio ejecutando "shell: inicio". 8 Haga que su clave privada arranque con Windows a través del concurso. Cree un acceso directo en la carpeta de Inicio con la sintaxis "ruta / a / pageant.exe" "ruta / a / privatekey"
- No necesitamos establecer la configuración ''puttykeyfile'' dentro de .git / config de nuestros repositorios
- MUY IMPORTANTE es que se utiliza la "URL de clonación SSH" de Github y no Https
La 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 ingresó en el terminal en su llavero:
curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
Entonces entra
git config --global credential.helper osxkeychain
Si ya has hecho la parte con git config antes del enrollamiento, no hay problema, funcionará
Me imagino que solucionaste tu problema, pero no veo la solución aquí que me ayudó, así que aquí está.
Escriba en la terminal:
echo "" > ~/.ssh/known_hosts
Eso known_hosts
su archivo known_hosts
y tendrá que agregar todos los hosts que usó y con los que se conectó, pero resolvió el problema.
Paso 1: comprueba tu configuración actual
cat .git/config
Conseguirás:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/path_to_your_git.git
fetch = +refs/heads/*:refs/remotes/origin/*
[user]
name = your_username
email = your_email
[branch "master-staging"]
remote = origin
merge = refs/heads/master-staging
Paso 2: elimina tu origen remoto
git remote rm origin
Paso 3: agregar origen remoto de nuevo con su nombre de usuario y contraseña
git remote add origin https://your_git_username:[email protected]/path_to_your_git.git
Si Git le solicita un nombre de usuario y una contraseña cada vez que intenta interactuar con GitHub, es probable que esté usando la URL de clonación HTTPS para su repositorio.
Usar una URL remota HTTPS tiene algunas ventajas: es más fácil de configurar que SSH y, por lo general, funciona a través de firewalls y proxies estrictos. Sin embargo, también le solicita que ingrese sus credenciales de GitHub cada vez que tire de un repositorio.
Puedes configurar Git para almacenar tu contraseña por ti. Para las ventanas :
git config --global credential.helper wincred
Si está usando Windows y esto ha empezado a suceder de forma inesperada en GitHub, probablemente se deba a la reciente desactivación del soporte 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 del Git completo para Windows o solo del Administrador de credenciales de Git para Windows .
Siento que la respuesta proporcionada por static_rtti es hacky en cierto sentido. No sé si estaba disponible anteriormente, pero las herramientas de Git ahora proporcionan almacenamiento de credenciales.
Modo caché
$ git config --global credential.helper cache
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 tienda
$ git config --global credential.helper ''store --file ~/.my-credentials''
Use el modo "almacenar" para guardar las credenciales en un archivo de texto sin formato en el disco, y nunca caducan.
Personalmente utilicé el modo tienda . Eliminé mi repositorio, lo cloné y luego tuve que ingresar mis credenciales una vez.
Referencia: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
También busque quién le está pidiendo la contraseña. ¿Es git o su agente de SSH?
En mi caso, cada vez que lo hice git pull
me preguntaba:
Enter passphrase for key ''/work/username/.ssh/id_rsa'':
Así que asumí que era git pedir una frase de contraseña. Así que seguí buscando soluciones, solo para darme cuenta más tarde de que mi agente de SSH se había cerrado. Lo que se puede arreglar usando eval ''ssh-agent -s''
y ssh-add
como se indica here.
Este fue un error bastante tonto que cometí, pero publicarlo aquí, en caso de que ayude a alguien a ahorrar tiempo para no ladrar el árbol equivocado, como hice yo.
Use el siguiente comando para aumentar el tiempo de espera para que pueda volver a escribir la contraseña por un tiempo
git config --global credential.helper ''cache --timeout 3600''
Lo usé para Bitbucket y Github funciona para ambos. Lo único que debe hacer es 3600
en segundos, aumentarlo en la medida que desee. Lo cambié a 259200
que es aproximadamente 30 días. De esta manera, vuelvo a ingresar mi contraseña cada 30 días aproximadamente.
Use esto: Reemplace github.com con el nombre de host apropiado
git remote set-url origin [email protected]:user/repo.git
tener un error tipográfico en la URL hará que git te pida un nombre de usuario y contraseña, git estúpido
Probado en Linux Kali, Git versión 2.7.0
tratar:
git clone https://github.com/thisrepodoesntexists/doesntexists.git
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-credenciales en su directorio% HOME% en lugar del directorio del proyecto: use la marca --global
git config --global credential.helper store