Git sigue pidiéndome una contraseña
He estado usando Git por un tiempo, pero las constantes solicitudes de contraseña están empezando a volverme loco.
Estoy usando Mac OS X y GitHub, y configuro 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 de Mac OS X, como se menciona en la página de frases de contraseña de clave SSH de GitHub . Mi clave pública está registrada en Git.
Sin embargo, cada vez que intento extraer Git, tengo que ingresar mi nombre de usuario y contraseña. ¿Hay algo más que una clave SSH que deba configurar para esto?
Creo que es posible que tengas la URL del repositorio de Git incorrecta.
Abra .git/config
y busque la sección ["origen" remoto]. Asegúrate de estar usando el SSH:
ssh://[email protected]/username/repo.git
Puede ver la URL SSH en la página principal de su repositorio si hace clic en Clonar o descargar y elige ssh .
Y NO el https
o git
uno:
https://github.com/username/repo.git
git://github.com/username/repo.git
Ahora puedes 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 la url = "..."
parte posterior [remote origin]
comourl = ssh://github/username/repo.git
Lo mismo ocurre con otros servicios. Asegúrese de que la dirección se vea así:protocol://something@url
Por ejemplo, .git/config
para Azure DevOps:
[remote "origin"]
url = https://[email protected]/mystore/myproject/
fetch = +refs/heads/*:refs/remotes/origin/*
Configurando credencial.helper
En OS X (ahora macOS), ejecute esto en Terminal :
git config --global credential.helper osxkeychain
Permite a Git usar el archivo Keychain.app para almacenar el nombre de usuario y la contraseña y recuperar la frase de contraseña de su clave SSH privada del llavero.
Para uso en Windows:
git config --global credential.helper wincred
Para uso en Linux:
git config --global credential.helper cache // If you want to cache the credentials for some time (default 15 minutes)
O
git config --global credential.helper store // if you want to store the credentials for ever (considered unsafe)
Nota: El primer método almacenará en caché las credenciales en la memoria, mientras que el segundo las almacenará en ~/.git-credentials
formato de texto sin formato.
Consulte aquí para obtener más información sobre el método Linux.
Consulte aquí para obtener más información sobre los tres.
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. Ejecute ssh-add -K
o ssh-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, crea ~/.ssh/config
con este contenido.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
De la ssh_config
man
página del 10.12.2:
UsarLlavero
En macOS, especifica si el sistema debe buscar frases de contraseña en el llavero del usuario cuando intenta utilizar 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 agregó la nota técnica 2449 que explica lo sucedido.
Antes de macOS Sierra,
ssh
presentaba un cuadro de diálogo solicitando su frase de contraseña y ofrecía la opción de almacenarla en el llavero. Esta interfaz de usuario quedó obsoleta hace algún tiempo y se eliminó.