Déverrouiller l'écran de connexion à l'aide de la ligne de commande

30

Est-il possible de déverrouiller l'écran de connexion du shell Gnome 13.04 à partir d'une ligne de commande? Un utilisateur est connecté au shell Gnome, je peux me connecter à une console en tant que cet utilisateur. J'ai également un accès root.

C'est pour accéder à un écran X11 actif via VNC, sans avoir à entrer le mot de passe.

Exécution

gnome-screensaver-command -d

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

écran de connexion

krlmlr
la source
Ssh vous envoie-t-il une sortie ou une erreur?
Braiam
@Braiam: Je peux ssh, ce n'est pas le problème. C'est pour accéder à un écran X11 actif via VNC, mais sans avoir à entrer le mot de passe.
krlmlr le

Réponses:

33

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

Si vous devez déverrouiller votre propre session , lancez-la loginctl unlock-session(aucune racine n'est requise car c'est votre propre session). Si vous avez plusieurs sessions et que vous souhaitez en sélectionner une seule, exécutez loginctl list-sessionspour identifier la session, puis exécutez par exemple loginctl unlock-session c187.

Si vous devez 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
Mikko Rantalainen
la source
3
C'est la seule réponse qui fonctionne le 16.04
lemonsqueeze
Pas besoin de sudo apparemment
lemonsqueeze
1
Vous avez besoin sudosi vous souhaitez déverrouiller les économiseurs d'écran de TOUTES les sessions (y compris les sessions ne s'exécutant pas avec votre ID utilisateur).
Mikko Rantalainen
A noter également la dernière sen unlock-sessions. Si vous souhaitez déverrouiller uniquement votre propre session, faites-le loginctl unlock-session.
Mikko Rantalainen
2
Ce devrait être la réponse acceptée!
Brice
16

Le problème avec l'exécution de commandes comme à gnome-screensaver-commandpartir d'une session SSH est généralement qu'elles ne se connectent pas automatiquement au bus de session approprié pour la session de bureau active - généralement, la définition de la variable DISPLAY corrigera cela, par exemple, cela fonctionne pour moi (connecté via SSH comme le même utilisateur qui possède 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.

Alternativement, vous pouvez basculer l'état actif en utilisant 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

tournevis
la source
1
Malheureusement, aucune de ces méthodes n'a déverrouillé le verrouillage d'écran particulier installé sur mon système (voir capture d'écran). Comment puis-je savoir quel processus est responsable du verrouillage de l'écran de toute façon?
krlmlr
1
Les commandes renvoient-elles une erreur? Si oui, merci de le publier. Pour voir si un économiseur d'écran différent fonctionne, vous pouvez essayer ps -fu <username> | grep saver- il est possible qu'il xscreensaversoit utilisé à la place de gnome-screensaver, auquel cas vous pouvez essayer DISPLAY=:0 xscreensaver-command -deactivate.
steeldriver
1
J'ai testé cette réponse sur Ubuntu 14.04. Ça ne marche pas. Il efface l'écran, mais l'écran reste verrouillé.
kasperd
5

Ce qui suit a fonctionné pour moi:

sudo killall gnome-screensaver

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

rosch
la source
Confirmé, j'ai eu ce problème lorsque le clavier ne tapait pas sur l'écran de déverrouillage, mais j'ai pu passer au terminal à l'aide de CTRL + ALT + F3 et ce tueur d'économiseur d'écran m'a aidé. Ensuite, je suis retourné CTRL + ALT + F2 à la session qui était verrouillée :)
jave.web
Cela fonctionne lorsque X2Go affiche l'écran de verrouillage et ne répond pas :)
endolith
1

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

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

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

( &Met en arrière-plan le nouveau gnome-shell afin que vous puissiez vous déconnecter de la console virtuelle et le faire fonctionner. Vous pouvez également utiliser Ctrl + Z pour suspendre le processus gnome-shell et le bgmettre en arrière-plan.)

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

Ted Percival
la source
Merci, je vais essayer de voir si le redémarrage gnome-shellfonctionne pour moi.
krlmlr
1

J'ai eu un problème similaire où l'écran de déverrouillage n'acceptait pas parfois la saisie au clavier. La façon dont je l'ai finalement résolu était de tuer les plusieurs gnome-screensaver processus en cours d'exécution, ainsi qu'un seul gnome-screensaver-dialog. Je suppose que quel que soit le processus qui générait 2 sessions d'économiseur d'écran gnome, je gâchais mon écran de déverrouillage. Je suis en fait censé utiliser xscreensaver à la place, alors peut-être que ça a dérangé.

Quoi qu'il en soit Ctrl+Alt+F1, recherchez les processus d'économiseur d'écran en cours d'exécution ps -aux | grep screenet tuez-les tous. Les commandes gnome et xscreensaver listées dans les autres réponses ne fonctionnaient pas pour moi.

Scott
la source