Cuando gnome-shell
falla en Linux Mint 12, por lo general vuelve a aparecer en un par de segundos. Cuando no lo hace, parece que se lleva consigo el demonio del anillo de claves, porque después de reiniciar con
while true; do DISPLAY=:0 gnome-shell --replace; done &
solicita la contraseña de la clave cada vez que ejecuto comandos como git pull
. ¿Cómo reinicio el demonio del llavero (si ese es el problema aquí) al reiniciar gnome-shell
?
Respuesta
ACTUALIZACIÓN: Estas instrucciones pueden estar obsoletas. Parece que en los sistemas recientes los sockets de gnome-keyring se movieron de un directorio aleatorio en ~/.cache/
a /run/user/<ID>/keyring/
(en menos en Debian Jessie), por lo que un simple reinicio debería ser suficiente.
Es un poco complicado ya que gnome-keyring-daemon establece parámetros de entorno únicos antes de que comience la sesión y este entorno se usa para acceder al canal del demonio un socket. El entorno se copia en cada aplicación, por lo que no hay forma de restablecer todas las variables de entorno. Hay «sa forma que implica reiniciar manualmente el demonio, enlazar el directorio antiguo con el nuevo (para que el entorno antiguo siga funcionando) y luego iniciar los servicios individuales.
-
Asegúrese de que no haya gnome- keyring-daemon en ejecución (este comando no debe devolver ningún pid, si es así, debe eliminarlo)
pgrep -f gnome-keyring-daemon
-
Limpiar el llavero antiguo sockets
rm -rf ~/.cache/keyring-*
-
Inicie el proceso del demonio – usamos setsid y redirigimos SDTIN, OUT & ERR por lo que no hay asociación a nuestro shell / tty. Esto creará un nuevo directorio con socket de control en ~ / .cache /.
setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1
-
Enlace simbólico del nuevo directorio de socket al antiguo uno (lo ideal es reemplazar el comodín con el directorio real, pero como los eliminamos todos antes, debería haber solo uno):
ln -s ~/.cache/keyring-* $GNOME_KEYRING_CONTROL
NB: No tengo su problema de gnome-shell, pero si no tiene estas variables exportadas desde donde comienza gnome-shell, muchos necesita pasar manualmente las siguientes variables de entorno a gnome-shell:
GPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK
. Debería poder derivar el valor de la ruta eliminada en el n. ° 2 (si tiene varios directorios, debe buscar el más reciente). -
Inicie el otro gnome- servicios de llavero (se conectarán al demonio usando el socket y habilitarán los servicios en él si todo ha ido bien hasta ahora):
/usr/bin/gnome-keyring-daemon --start --components=pkcs11 /usr/bin/gnome-keyring-daemon --start --components=gpg /usr/bin/gnome-keyring-daemon --start --components=ssh
Estos últimos comandos se imprimirán variables de entorno … puede ignorarlas, solo asegúrese de que no haya errores de conexión de socket.
Además, si desea limpiar sockets antiguos, puede agregar un @reboot
entrada cron que realiza una limpieza:
find ~/.cache/ -maxdepth 1 -type l -name "keyring-*" -delete
Comentarios
Respuesta
Esto debería realizar un reinicio limpio del demonio:
gnome-keyring-daemon -r -d
Fuente: ArchLinux
Comentarios
- Funcionó perfectamente en Mint 18 (Sarah). ¡Gracias!
- Trabajó en ubuntu 18.04, ¡gracias!
~/.cache/
por lo que esos pasos podrían omitirse; simplemente matar y elsetsid
relanzamiento fue suficiente. Siguientessh
login me pidió mi contraseña correctamente y se guardó en caché como se esperaba.