¿Cómo hacer que git no solicite la frase de contraseña para la clave ssh en windows?

43

Estoy usando git bash y configuré la clave ssh usando ssh-keygen y cada vez que hago algo con un repositorio me piden una frase de contraseña /c/Users/jankiewj/.ssh/id_rsa. ¿Hay alguna manera de desactivar esa frase de contraseña?

jcubic
fuente
Esta página en serverfault podría ayudar a serverfault.com/questions/194567/…
@Radoo no ayudó.
jcubic

Respuestas:

56

Puedes ejecutar esto en git bash:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

pedirá una frase de paso en el segundo comando, y eso es todo. Cada acción adicional que tendrá que hacer (que una vez requirió la frase de paso) no le pedirá la frase de paso (vea un ejemplo en la captura de pantalla a continuación):

Agregar frase de contraseña en git bash en Windows

jcubic
fuente
77
Tengo que ingresarlo nuevamente, tan pronto como cierre git bash ... ¿hay una solución permanente?
Negro
@Black es por sesión bash, lo puse .bashrcasí que cada vez que abro git bash recibo el mensaje y para esa sesión estoy listo.
jcubic
¿Qué pones exactamente en .bashrc? ¿Y dónde está .bashrc?
Negro
Editar: no importa, debe crear el archivo usted mismo, ~/.bashrcluego ingresar las líneas de su publicación y guardarlo, eso es todo :) ¡gracias!
Negro
En lugar de usar las líneas anteriores, especialmente en el .bashrc, usaría un script y lo colocaría en el .bash_profileo .profile. Aquí hay un fragmento de la parte principal de mi .bash_profile, debería resolver esto para cualquiera que todavía esté buscando una respuesta; Es similar a una respuesta a continuación. En la parte superior de la secuencia de comandos, cargo mi .bashrc, que si no corresponde, simplemente lo dejo afuera. Nota: deberá cambiar las referencias a id_rsalo que haya denominado su clave SSH privada, y tal vez la ruta.
Rockin4Life33
9

Una solución ligeramente mejor y permanente es iniciar automáticamente el agente ssh al abrir git bash en windows. Puede copiar / pegar lo siguiente en su .profile o .bashrc. Prefiero ponerlo en el perfil.

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Esta solución fue tomada de este artículo de ayuda de github

velval
fuente
He puesto mi código simple .bashrc, ¿ en qué se diferencia su solución? En Windows bash, cada shell es independiente, por lo que el agente nunca se ejecuta cuando ejecuta el shell.
jcubic
La solución funciona bien al poner el código en .bashrc. Solicitar la frase de contraseña ssh solo la primera vez. Safed mi vida. Gracias.
Ben Asmussen
gracias, eso me está salvando la vida.
Gumuruh
Esta realmente debería ser la respuesta aceptada, ya que presenta una solución que es persistente y cumple mejor con lo que creo que el OP estaba preguntando.
Richard D
¿Qué hago si accidentalmente escribí la contraseña incorrecta al inicio? Editar: según superuser.com/a/271673/647110 , puede ssh-add -Deliminar todas las claves.
Nils Guillermin
1

No estoy seguro de si quiero recomendarlo, pero cuando cree la Clave y se le solicite que establezca la contraseña, simplemente presione enter y omita la contraseña.

Eche un vistazo a este enlace para saber cómo usarlo ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

Quizás te ssh-agentpueda ayudar de alguna manera. Pero no estoy seguro sin conocer su sistema actual.

David Bern
fuente
44
definitivamente no es una buena respuesta
Kennet Celeste
Era la única forma de resolverlo en Windows 10. Después de seguir todos los pasos de "Generar una nueva clave SSH y agregarla a la guía github de ssh-agent", siempre me pedía la frase de contraseña. Incluso después de agregarlo. Ese comportamiento estaba rompiendo mi flujo de implementación de Maven porque en la mvn release:performfase intenta verificar la etiqueta de lanzamiento sin proporcionar la frase de contraseña. Entonces, solo borrar la frase de contraseña resolvió este problema.
Fernando Miguel Carvalho
-3

Ingrese este comando git en su ubicación de repositorios " ssh-keygen -p " Esto le pedirá que ingrese la ubicación del archivo de claves, la frase de contraseña anterior y la frase de contraseña nueva (que puede dejarse en blanco para que no tenga frase de contraseña). No ingrese nada en la nueva contraseña y eliminará la frase de contraseña

Bharti
fuente
1
Dejar una contraseña en blanco es inseguro y muchos desarrolladores corporativos no podrán tener una frase de contraseña en blanco debido a restricciones. Es una solución poco convincente, no una solución para el problema de OP.
cbaldan
cojo quizás, pero solo para uso local, sabroso y rápido ™
Jim P