web-dev-qa-db-fra.com

Déverrouiller l'écran de connexion en ligne de commande

Est-il possible de déverrouiller l'écran de connexion 13.04 Gnome Shell à partir d'une ligne de commande? Un utilisateur est connecté à Gnome Shell, je peux me connecter à une console sous cet utilisateur. J'ai aussi un accès root.

Ceci permet d'accéder à un affichage X11 actif via VNC, sans avoir à saisir le mot de passe.

L'exécution

gnome-screensaver-command -d

comme suggéré dans un post de blog n'a pas aidé.

login screen

27
krlmlr

Je suppose que vous avez un système Linux récent avec systemd (par exemple, Ubuntu 16.04 ou plus récent).

Si vous avez besoin de déverrouiller votre propre session, exécutez simplement loginctl unlock-session (aucune racine requise, car il s’agit de votre propre session). Si vous avez plusieurs sessions et souhaitez en sélectionner une seule, exécutez loginctl list-sessions pour identifier une session, puis exécutez par exemple. loginctl unlock-session c187.

Si vous avez besoin de déverrouiller toutes les sessions, exécutez simplement Sudo loginctl unlock-sessions. Notez que cela déverrouillera immédiatement TOUTES les sessions, quel que soit l'utilisateur exécutant l'économiseur d'écran.


Si vous avez besoin de plus d'informations pour identifier la bonne session, vous pouvez essayer quelque chose comme ceci:

loginctl list-sessions --no-legend | while read id rest; do echo; loginctl show-session $id; done
30

Le problème avec l’exécution de commandes telles que gnome-screensaver-command à partir d’une session SSH est qu’elles ne se connectent pas automatiquement au bus de session approprié pour la session de bureau active; via SSH en tant qu’utilisateur possédant la session X verrouillée, qui est sur DISPLAY: 0):

$ DISPLAY=:0 gnome-screensaver-command -d

pour déverrouiller, et

$ DISPLAY=:0 gnome-screensaver-command -l

verrouiller.

Vous pouvez également basculer l'état actif à l'aide de dbus-send - par exemple

$ export DISPLAY=:0
$ dbus-send --session \
          --dest=org.gnome.ScreenSaver \
          --type=method_call \
          --print-reply \
          --reply-timeout=20000 \
          /org/gnome/ScreenSaver \
          org.gnome.ScreenSaver.SetActive \
          boolean:false

Source: https://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html#gs-examples

15
steeldriver

Ce qui suit a fonctionné pour moi:

Sudo killall gnome-screensaver

Particulièrement utile lorsque vous êtes connecté via SSH avec un autre utilisateur.

5
rosch

J'ai eu un problème similaire où l'écran de déverrouillage n'acceptait parfois pas la saisie au clavier. La façon dont j'ai finalement résolu le problème était de tuer les plusieursgnome-screensaver qui étaient en cours d'exécution, ainsi qu'un processus gnome-screensaver-dialog. J'imagine que quel que soit le processus qui a été créé, deux sessions d'économiseur d'écran gnome ont gâché mon écran de déverrouillage. En fait, je suis supposé utiliser xscreensaver, alors peut-être que ça a tout gâché.

Quoi qu'il en soit, Ctrl+Alt+F1, recherchez les processus d'économiseur d'écran exécutant ps -aux | grep screen et supprimez-les tous. Les commandes gnome et xscreensaver listées dans les autres réponses ne m'ont pas fonctionné.

1
Scott

J'ai eu un problème avec le verrouillage d'écran de gnome 3 (économiseur d'écran) bloqué sur un écran vide. J'ai réussi à le contourner en remplaçant le gestionnaire de fenêtres gnome-Shell.

Ctrl + Alt + F1 et connectez-vous à une console virtuelle, puis:

pkill -QUIT gnome-Shell
DISPLAY=:0.0 gnome-Shell -r &

(& Contient le nouveau gnome-Shell afin que vous puissiez vous déconnecter de la console virtuelle et le garder en fonctionnement. Vous pouvez également utiliser Ctrl + Z pour suspendre le processus gnome-Shell et bg pour le mettre en arrière-plan.)

Ce n'est peut-être pas élégant, mais cela m'a enfin permis de revenir à mes applications de bureau sans me forcer à me déconnecter.

1
Ted Percival