Quiero poner ssh-add /path/to/special_key
en 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 -l
muestra 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 -l
para 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/key
ssh-keygen
en la respuesta no genera una clave, igual quessh-add -l
en 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-add
pero puede usarssh-keygen
y algunas secuencias de comandos para verificar.Lo anterior se imprimiría
yes
si la huella digital representada por el archivo/path/to/special_key
estuviera presente enssh-add -l
la salida de.Ejemplo
Donde el contenido de la salida de se
ssh-keygen -lf /path/to/special_key
ve 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-add
explí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 yes
en su.ssh/config
archivo.fuente
ssh-add -K FILE
funcionó 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