Estoy usando git bash y configuro la clave ssh usando ssh-keygen y cada vez que hago algo con un repositorio, git me pide una frase de contraseña para /c/Users/jankiewj/.ssh/id_rsa
. ¿Hay alguna manera de desactivar esa frase de contraseña?
EDITAR: Edité el título original (eliminé Windows) ya que acabo de usar una instalación nueva de Ubuntu en mi computadora portátil de trabajo y cuando la clave ssh tiene una frase de contraseña, siempre la solicita y la solución para solucionarlo es la misma. Probablemente esto funcione igual en MacOSX que también es Unix y usa las mismas herramientas básicas.
Respuesta1
Puede ejecutar esto en git bash, Windows WLS o bash en GNU/Linux real.
eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa
le pedirá una contraseña en el segundo comando y listo. Cada acción adicional que deba realizar (que alguna vez requirió una frase de contraseña) no le solicitará la frase de contraseña (vea un ejemplo en la captura de pantalla a continuación):
Respuesta2
Un poco mejor ysolución permanentees 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 tomadade este artículo de ayuda de github
Respuesta3
TDLR: para usuarios de Windows,
- correr
ssh-add "C:\\Users\\<your user>/.ssh/id_rsa"
- no
ssh-add ~/.ssh/id_rsa
Por ejemplo, veo esto todo el tiempo:
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /c/Users/User/.ssh/id_rsa:
Identity added: /c/Users/User/.ssh/id_rsa (/c/Users/User/.ssh/id_rsa)
$ git pull
Enter passphrase for key 'C:\Users\User/.ssh/id_rsa':
Tenga en cuenta los separadores de ruta inconsistentes: el agente ssh convierte ~ usando separadores de ruta de Unix, pero git usa separadores de ruta de Windows en su lugar. Dado que la ruta del id_rsa
archivo se utiliza como clave, esto explica por qué se omite el caché.
- Otra diferencia es
C:/
en lugar de/c/
- Observación relacionada: cuando git le solicita la frase de contraseña, no se almacenará en caché, por lo que puede ingresarla allí indefinidamente. Intente pasar la frase a
ssh-add
only. - En Windows, suponga que
~
tiene "varios valores", por lo que es mejor ser explícito. ssh-add
mira ubicaciones predeterminadas como~/.ssh/id_rsa
. En Windows, asuma que eso es ambiguo. Pase explícitamente la ruta formateada explícitamente en lugar de confiar en las rutas predeterminadas:ssh-add "C:\\Users\\<your user>/.ssh/id_rsa"
, es decir, también en la respuesta de @velval.
Respuesta4
Llaveroes un programa para hacer este trabajo de forma inteligente.
Debe ejecutarse desde .bashrc (o equivalente) y configurará el entorno correctamente, sin otra configuración que las claves que debe cargar.
Esto es lo que uso:keychain --quiet key1.pem key2.pem
Se da cuenta de que el shell es Zsh y funcionó exactamente igual cuando usé Bash.