¿Cómo ingresar la contraseña del llavero predeterminado a través de la línea de comando?

12

¿Hay alguna manera de ingresar la contraseña de llavero predeterminada usando la línea de comando?

Por ejemplo:

Tiene una configuración remota de Ubuntu 10.10 configurada para inicio de sesión automático. No desea eliminar la contraseña del llavero.

Muy bien, el sistema se inicia e inicia sesión automáticamente, luego solicita la contraseña del llavero ahora, en este punto puede crear conexiones ssh pero no puede usar el escritorio remoto.

¿Qué puede hacer para ingresar la contraseña del llavero en este momento?

Además, para aclarar mejor, esto es desde una conexión remota utilizando la línea de comando.

Jerkofalltrades
fuente

Respuestas:

10

Gracias a python-gnomekeyring , esto es relativamente fácil:

python -c "import gnomekeyring;gnomekeyring.unlock_sync(None, 'my password');"

O como un guión apropiado:

#!/usr/bin/env python
import gnomekeyring
gnomekeyring.unlock_sync(None, 'my password');

Creo que no necesitas instalar el paquete. Pero no puede hacer daño intentarlo.


Tenga en cuenta que almacenar su contraseña en su disco duro es un riesgo de seguridad inmenso. Deberías usar esto en su lugar:

#!/usr/bin/env python

import gnomekeyring
import getpass

gnomekeyring.unlock_sync(None, getpass.getpass('Password: '));

Puede guardar este script, por ejemplo, como unlock-keyring.pyy luego hacer lo siguiente:

sudo mv unlock-keyring.py /usr/bin/unlock-keyring
sudo chmod a+x /usr/bin/unlock-keyring

A partir de entonces, siempre puede escribir unlock-keyringy solicitar una contraseña. No haga esto con la versión que contiene su contraseña .

Puede reemplazarlo Nonecon el nombre de su llavero, por ejemplo 'session', si desea desbloquear uno que no sea el predeterminado.


Me está costando probar esto correctamente, así que avíseme si no funciona y lo echaré un vistazo de inmediato. También avíseme si funciona :-)

Stefano Palazzo
fuente
1
Este paquete ya no se envía con Ubuntu :(
Duelo
Aquí hay información de libsecret (usado en el nuevo gnome-keyring) man: "En libsecret puedes desbloquear elementos directamente, y el resultado es (con el demonio gnome-keyring) que la colección adjunta se desbloqueará. Ya no es posible pasar una contraseña para desbloquear llaveros. Estos se solicitan automáticamente ".
Dolor
1

¡Esto funciona definitivamente!

Después de mucho ensayo y error, descubrí que el antiguo paquete "pam-keyring" todavía contiene la "herramienta pam-keyring" que puede usar para desbloquear llaveros desde la línea de comandos. ¿Ubuntu sacó la herramienta del paquete después del lanzamiento de Feisty, quizás por razones de seguridad?

Esta aquí:-

wget https://launchpad.net/ubuntu/+archive/primary/+files/pam-keyring_0.0.8.orig.tar.gz

descomprímelo donde quieras y luego haz:

./configure
make

NO realice la instalación porque no desea que actualice el paquete en ningún momento.

luego edite en el archivo de configuración de inicio de sesión posterior rc.local para que se vea así: -

sudo gedit /etc/rc.local 

exec echo ENTER_YOUR_PASSWORD_HERE | /PATH_TO_PAM_KEYRING_TOOL/pam-keyring-tool --keyring=login -u -s

exit 0

¡Listo!

matthew toft
fuente
1

Gracias a Stefano! Su respuesta me llevó a la mitad del camino, pero descubrí que el método, por defecto, solo funciona cuando se ejecuta el script python desde la máquina local. Si está ejecutando localmente, tiene acceso al llavero Gnome. Quería poder ejecutar su script a través de una sesión SSH, pero seguía recibiendo "gnomekeyring.IOerror", porque el llavero no era accesible. Después de buscar mucho en Google, encontré la solución @ https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh-session/

Para destilar esa página a la parte más pertinente que se aplica a esta situación, agregue lo siguiente a su script .bashrc.

# Export $DBUS_SESSION_BUS_ADDRESS when connected via SSH to enable access
# to gnome-keyring-daemon.
if [[ -n $SSH_CLIENT ]]; then
    export $(cat /proc/$(pgrep "gnome-session" -u "$USER")/environ | grep -z "DBUS_SESSION_BUS_ADDRESS=")
fi

No vale la pena que el patrón grep proporcionado en el enlace no funcionó para mí, por lo que el que tengo arriba es ligeramente diferente.

Robert
fuente
En MInt 17.2 tuve que cambiar gnome-session a mate-session
frankster