Si está utilizando SSH y su clave privada está encriptada con una frase de contraseña, aún se le pedirá que ingrese la frase de contraseña / contraseña para la clave privada cuando realice operaciones de red con Git como push
,pull
, y fetch
.
Use ssh-agent para guardar las credenciales de contraseña / contraseña de clave privada
Si desea evitar tener que ingresar su frase de contraseña cada vez, puede usarla ssh-agent
para almacenar sus credenciales de frase de contraseña de clave privada una vez por sesión de terminal, como explico en mi respuesta a No se pudo abrir una conexión con su agente de autenticación :
$ eval `ssh-agent -s`
$ ssh-add
En un msysgit Bash de Windows, debe evaluar la salida de ssh-agent
, pero no estoy seguro de si necesita hacer lo mismo en otros entornos de desarrollo y sistemas operativos.
ssh-add
busca una clave privada en su .ssh
carpeta de inicio llamada id_rsa
, que es el nombre predeterminado, pero puede pasar una ruta de archivo a una clave con un nombre diferente.
Matar al agente
Cuando haya terminado con su sesión de terminal, puede cerrar ssh-agent
con la bandera de matar -k
:
$ ssh-agent -k
Como se explica en el ssh-agent
manual :
-k
Mata al agente actual (dado por la variable de entorno SSH_AGENT_PID).
Tiempo de espera opcional
Además, puede tomar un parámetro de tiempo de espera opcional como este:
$ ssh-add -t <timeout>
donde <timeout>
es del formato <n>h
por <n>
horas, <n>m
por <n>
minutos, etc.
De acuerdo con el ssh-agent
manual :
-t life
Establezca un valor predeterminado para la vida útil máxima de las identidades agregadas al agente. La vida útil se puede especificar en segundos o en un formato de tiempo especificado en sshd_config (5) . Una vida útil especificada para una identidad con ssh-add (1) anula este valor. Sin esta opción, la vida útil máxima predeterminada es para siempre.
Vea esta página para más formatos de hora .
Advertencia de seguridad para usuarios de Cygwin
Los usuarios de Cygwin deben ser conscientes de un posible riesgo de seguridad al usar ssh-agent en Cygwin :
la gente debería ser consciente de los peligros potenciales de ssh-agent bajo Cygwin 1 , aunque bajo un netstat local y puertos remotos no parece que el puerto especificado en / tmp / ssh-foo sea accesible para nadie ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
Y en el enlace citado :
Sin embargo, tenga en cuenta que los sockets de dominio de Unix de Cygwin son INSEGURAMENTE FUNDAMENTALMENTE, por lo que DESCURSO uso de ssh-agent en Cygwin.
cuando ejecuta ssh-agent en Cygwin, crea un socket AF_UNIX en el /tmp/ssh-$USERNAME/
directorio. En Cygwin, los sockets AF_UNIX se emulan mediante sockets AF_INET. Puede verlo fácilmente si busca en el /tmp/ssh-$USERNAME/agent-socket-*
archivo a través del Bloc de notas. Verás algo como
!<socket >2080
entonces corre netstat -a
y sorprende! Tienes algún programa escuchando el puerto 2080. Es ssh-agent. Cuando ssh recibe un desafío de RSA del servidor, se refiere al correspondiente /tmp/ssh-$USERNAME/agent-socket-*
(en Cygwin, en nuestro caso, eso significa que abrirá la conexión localhost:2080
) y le pide a ssh-agent que procese el desafío de RSA con la clave privada que tiene, y luego simplemente pasa la respuesta recibida del agente ssh al servidor.
En Unix, este escenario funciona sin problemas, porque el núcleo de Unix verifica los permisos cuando el programa intenta acceder a un socket AF_UNIX. Sin embargo, para los sockets AF_INET, las conexiones son anónimas (lea "inseguro"). Imagina que tienes el agente ssh Cygwin ejecutándose. Un pirata informático malintencionado puede escanear su caja, localizar el puerto abierto utilizado por ssh-agent, abrir una conexión a su servidor SSH, recibir el desafío de RSA de él, enviarlo a su ssh-agent a través de un puerto abierto que encontró, recibir el Respuesta de RSA, envíelo al servidor SSH y listo, él / ella inició sesión en su servidor como usted.