Quiero poner ssh-add /path/to/special_keyen la parte superior de un guión. Esto funciona bien, pero siempre solicita la frase de contraseña. Esto es extraño y un poco molesto, ya que todavía solicita la frase de contraseña incluso cuando ssh-add -lmuestra que la clave ya se ha agregado.
¿Hay alguna manera de decirlo: "agregue esta clave y solicite la frase de contraseña si aún no se ha agregado, de lo contrario no haga nada"?
shell-script
ssh
ssh-agent
Darren Cook
fuente
fuente

Respuestas:
No veo ninguna opción para ssh-add que ayude a lograr el resultado deseado, pero es bastante fácil solucionar esto, dado que le preocupa una clave en particular.
Primero, tome la huella digital de su llave especial:
Digamos que esta huella dactilar se parece a 6d: 98: ed: 8c: 07: 07: fe: 57: bb: 19: 12: 89: 5a: c4: bf: 25
Luego, en la parte superior de su script, use
ssh-add -lpara verificar si esa clave está cargada, antes de solicitar agregarla:Puede doblar todo esto en una sola línea si lo desea:
fuente
ssh-keygen(después de todo, no quiero generar ninguna clave), sino que usa la ruta de la clave:ssh-add -l | grep -q 'path/to/key' || ssh-add /path/to/keyssh-keygenen la respuesta no genera una clave, igual quessh-add -len su ejemplo, en realidad no agrega nada. Los indicadores modifican el comportamiento de los comandos para que no coincida exactamente con el nombre. Tenga en cuenta que estas versiones difieren funcionalmente: si se verifica por ruta y la clave en esa ruta cambia, su versión no la seleccionará. La versión en la respuesta también detectaría la clave existente sin importar desde dónde se cargó.No hay una forma directa de verificar usando solo,
ssh-addpero puede usarssh-keygeny algunas secuencias de comandos para verificar.Lo anterior se imprimiría
yessi la huella digital representada por el archivo/path/to/special_keyestuviera presente enssh-add -lla salida de.Ejemplo
Donde el contenido de la salida de se
ssh-keygen -lf /path/to/special_keyve así:Y estamos usando 'awk' {print $ 2} 'para seleccionar solo la segunda columna, que contiene la huella digital, es decir:
Referencias
fuente
Es posible que tenga razones particulares para usarlo
ssh-addexplícitamente, pero si solo desea "Quiero que se me solicite mi frase de contraseña la primera vez que use la clave, pero no después de eso", openssh tiene una solución más simple:Poner
AddKeysToAgent yesen su.ssh/configarchivo.fuente
ssh-add -K FILEfuncionó bien para mí en Mac.Todavía muestra las líneas "Identidad agregada:" pero no solicita frase de contraseña.
Desde la página del manual:
fuente