tag practices delete crear commits commands best git github

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.



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í

  1. origin:https://github.com/myaccount/myproject.git/

  2. 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:

  1. 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

  2. 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.

  3. Su autenticación HTTPS (si está utilizando https lugar del protocolo ssh ).

    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

  1. Descargar e instalar masilla
  2. Establezca la variable de entorno ''GIT_SSH'' = ''ruta / a / plink.exe'' (en la carpeta de masilla instalada) - ¡MUY IMPORTANTE!
  3. REINICIE WINDOWS EXPLORER para que las Variables Env tengan efecto (no solo se puede reiniciar el símbolo del sistema)
  4. Ejecute puttygen.exe para generar una nueva clave, copie la clave PUBLIC en el sitio de Github
  5. Guarde esta nueva clave PRIVADA en algún lugar seguro en el disco (preferiblemente no dropbox)
  6. Ejecute putty.exe y conecte SSH a github.co
  7. 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"
  8. No necesitamos establecer la configuración ''puttykeyfile'' dentro de .git / config de nuestros repositorios
  9. 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



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



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