¿Cuál podría ser la razón, que las claves privadas no están desbloqueadas?

13

Desde que actualicé a Ubuntu 17.10 hace un tiempo, mis claves privadas, las que uso, por ejemplo, para acceder a mi servidor a través de ssh, ya no se desbloquean mediante programación después de iniciar sesión.

ingrese la descripción de la imagen aquí

Tengo entendido que, por lo general, seahorse clientdebe ocuparse de esto, preguntándole si debe guardar o no la contraseña de la clave cuando la ingrese por primera vez.

Mi primera suposición fue que eso seahorse-daemonno estaba funcionando por alguna razón, pero es:

user@Zeus:~$ ps aux | grep seahorse
user    19170  0.0  0.1 432636 26564 ?        Ss   00:07   0:00 seahorse-daemon

Mi segunda suposición fue que, por alguna razón, tengo que eliminar todas las contraseñas relacionadas almacenadas en seahorse en »Contraseñas-> inicio de sesión«: ingrese la descripción de la imagen aquí

Esperaba forzar al cliente a que me volviera a preguntar y luego volver a almacenarlos. Pero esto tampoco ayudó. El cliente no aparece para preguntarme ...

Luego encontré esta pregunta, que podría estar relacionada, pero no me ayudó: Desbloquee todas las claves privadas en Ubuntu, ingresando la contraseña solo una vez al iniciar sesión

Como la gestión de otras contraseñas funciona como se esperaba (por ejemplo, contraseñas para nautilus, Chromium, Nextcloud, etc.), supongo que el problema tiene que ver con ssh-agent...

¿Alguien puede insinuarme en las direcciones correctas, cómo resolver este problema? ¿Ha cambiado algo en la forma en que GNOME maneja las contraseñas? ¿Quizás algún nuevo programa sofisticado no se instaló durante el proceso de actualización?

ACTUALIZAR Cuando agregue la clave privada al agente de autenticación nuevamente con:

ssh-add ~/.ssh/id_rsa

e intente iniciar sesión, se me pedirá que desbloquee la clave solo una vez, luego la clave se desbloqueará mediante programación. Pero esto solo funciona hasta el próximo reinicio. Después de un nuevo comienzo, tengo que agregar la clave nuevamente ...

usuario5950
fuente
También, de repente, comencé a pedirme una contraseña para desbloquear claves ssh mientras usaba Ubuntu 17.10. La respuesta aceptada no me ayudó (solo funciona hasta que se reinicia). Aquí hay una pregunta aparentemente duplicada.
Alexey
Seahorse cifra sus datos con, lo adivinó, su contraseña (normalmente). Inicios de sesión sin contraseña, como ssh con una clave, lector de huellas digitales, ... deje el descifrado hasta que sea necesario, luego se le pedirá. ¿Cambió los inicios de sesión ssh de contraseña a clave cuando comenzó el problema?
ubfan1

Respuestas:

7

Sí, ssh-agent es la respuesta. Para guardar la frase de contraseña, todo lo que tiene que hacer es:

ssh-add ~/.ssh/id_rsa

Luego ingrese su contraseña e inicie sesión nuevamente.

cielo oscuro
fuente
Esto ayuda solo hasta el próximo reinicio.
Alexey
@Alexey Sí, puedo confirmar que funciona solo hasta el próximo reinicio. No encontré una solución todavía.
user5950
ssh-agent se ejecuta durante una sesión de inicio de sesión y finaliza cuando lo finaliza por su propia seguridad. Si persiste durante los reinicios y la contraseña de su cuenta se ve comprometida, de repente un atacante tiene acceso a su identidad RSA y, por lo tanto, a todas las máquinas a las que puede acceder. Este sería un desagradable agujero de seguridad. Sin embargo, existen algunas soluciones alternativas, a costa de hacer que su cuenta sea menos segura. Ver unix.stackexchange.com/questions/90853/…
darksky el
6

Agregar el Agente de clave SSH (Llavero GNOME: Agente SSH) a las Aplicaciones de inicio resolvió el problema para mí:

ingrese la descripción de la imagen aquí

Alexey
fuente
3

Primera opción

Iniciar agente ssh:

ssh-agent

Agregue la clave ssh:

ssh-add ~/.ssh/id_rsa

Para que persista después del reinicio, inicie automáticamente ssh-agent, agregue la siguiente línea a su .bash_profile:

if [ -z "$SSH_AUTH_SOCK" ] ; then
  eval `ssh-agent -s`
  ssh-add
fi

Segunda opción

Agregue esto a su .bashrc o .zshrc:

if [ ! -S ~/.ssh/ssh_auth_sock ]; then
  eval `ssh-agent`
  ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
fi
export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
ssh-add -l > /dev/null || ssh-add

Esto solo debe solicitar una contraseña la primera vez que inicie sesión después de cada reinicio. Seguirá reutilizando el mismo ssh-agent mientras siga ejecutándose.

An0n
fuente
Gracias, esta solución parece funcionar, pero estoy divagando, ¿qué pasó para que deje de funcionar en primer lugar? Solía ​​funcionar durante la última década ... Me gustaría encontrar la causa antes de ir a una solución ...
user5950