¿Cómo puedo realizar un `git pull` sin volver a ingresar mi contraseña SSH?


96

¿Es posible configurarlo git/sshpara que no tenga que ingresar mi contraseña cada vez que quiera realizar una git pull? Tenga en cuenta que el repositorio es privado en github.

O, alternativamente, ¿cuál sería la mejor práctica para automatizar la implementación de código desde un repositorio privado de Github?

Detalles adicionales: instancia EC2 que ejecuta una AMI pública basada en Fedora.



¿Tienes solución a este problema?
nim

A partir de git 2.11+ (Q4 2016), usar libsecret es otra forma: stackoverflow.com/a/40312117/8477066
Hielke Walinga

Respuestas:


69

Eche un vistazo a este enlace https://help.github.com/articles/working-with-ssh-key-passphrases/

¡Pero no quiero ingresar una frase de contraseña larga cada vez que uso la clave!

¡Yo tampoco! Afortunadamente, hay una pequeña herramienta ingeniosa llamada ssh-agentque puede guardar su frase de contraseña de forma segura para que no tenga que volver a ingresarla. Si está en OSX Leopard o posterior, sus claves se pueden guardar en el llavero del sistema para hacer su vida aún más fácil. La mayoría de las instalaciones de Linux iniciarán automáticamente ssh-agent cuando inicie sesión.


3
un poco nervioso al responder a alguien con una reputación de 17.7k; malinterpreté la pregunta ... ;-)
Fredrik Pihl

3
¿nervioso? tenga la seguridad: la gran mayoría de la gente aquí es bastante educada ... y aquellos que no lo son, bueno, tienen problemas más grandes que yo :)
jldupont

2
Este enlace fue útil para explicar qué comandos ejecutar para guardar su frase de contraseña en ssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim

No quiero usar llaves. Sencilla tengo pase de usuario \ y quiero guardarlo en el lado del cliente GIT
nim

¿Por qué el enlace solo ofrece opciones para Mac / Widows? Quiero hacer git pull en el servidor Unix sin volver a ingresar el pase. Me las arreglé para hacerlo funcionar para un proyecto histórico, pero no puedo decir lo que hice allí. ¿El punto es que cuando ssh a una máquina Unix remota, la clave se pasa y se usa como una clave de git pull (o vcs de compositor privado)? Creo que estoy malinterpretando algo aquí. Cualquier ayuda apreciada :)
trainoasis

29

Activé el almacenamiento en caché de la contraseña como se describe aquí:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Para almacenar en caché la contraseña durante un mes:

git config --global credential.helper 'cache --timeout=2628000'

Gracias, temuri. He estado buscando por todas partes este detalle exacto. No estaba funcionando, pero la documentación aparentemente no menciona que es solo para HTTPS.
Mike Emery

2
Si usa una contraseña ( no una frase de contraseña con archivo de clave) para una URL basada en SSH de un repositorio de Git remoto, no puede guardar la contraseña en absoluto. Pero noté que después de emitir cualquier comando git, puede escribir la contraseña inmediatamente y presionar Enter . No es necesario que espere a que aparezca la solicitud de contraseña.
ADTC

1
git todavía pide pase
nim

12

Prueba esto:

git config credential.helper store

Tendrá que ingresar su contraseña una vez, luego de eso se almacena en una carpeta dentro de la raíz.

Como señalaron los comentarios, esto NO funciona para contraseñas SSH, solo para contraseñas HTTPS.


1
@nim Eso no significa que debas rechazar la respuesta, he sugerido lo que funcionó para mí y alguien podría encontrarlo útil.
Yankee

No es una contraseña para guardar. Lo intento y no sale nada. Si tiene un control remoto como este ssh: // nombre @ ip / ruta
nim

1
Esto funciona si está buscando almacenar la contraseña de autenticación básica HTTP.
Phil

4
Esto NO funciona para contraseñas SSH, solo para contraseñas HTTPS.
Eliezer Berlin

funciona bien para https. Solo necesita escribir esto. La próxima vez debería ser la última vez que necesite ingresar la paráfrasis. La próxima vez, git debe recordar la contraseña.
Jonathan

7

Su situación ahora está arreglada, sin embargo para mí fue el hecho de que tenía más de una clave en ~/.ssh/

Para resolver el problema tuve que crear un archivo llamado ~/.ssh/configy agregar la línea:

IdentityFile ~/.ssh/my_key2_rsa

donde ~/.ssh/my_key2_rsaesta mi llave


1
Gracias por esto, mis archivos id_rsa y id_rsa.pubtienen un nombre personalizado, por lo que git nunca lo reconocería. ref: linux.die.net/man/5/ssh_config
lasec0203

5

No sé por qué nadie ha informado de esto todavía. Pero el enfoque más simple sería simplemente agregar una sola línea AddKeysToAgent yesen la parte superior del archivo .ssh / config. Por supuesto, ssh-agentdebe estar funcionando de antemano. Si no se está ejecutando (verifique con el comando ssh-agenten la terminal), simplemente ejecúteloeval $(ssh-agent)

Puedo confirmar que esto funciona, porque en mi proyecto con muchos submódulos y para cada submódulo que se clona, ​​tuve que escribir mi frase de contraseña ssh. Después del truco anterior, ya no necesito hacerlo.

La fuente de la solución es /ubuntu/362280/enter-ssh-passphrase-once/853578#853578


Esta es absolutamente la respuesta correcta. Además, para que ssh-agent se ejecute, se puede usar un servicio de usuario systemd
someonewithpc
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.