Desbloquee la pantalla de inicio de sesión con la línea de comando

30

¿Es posible desbloquear la pantalla de inicio de sesión 13.04 Gnome shell desde una línea de comando? Un usuario ha iniciado sesión en Gnome shell, puedo iniciar sesión en una consola como este usuario. También tengo acceso de root.

Esto es para acceder a una pantalla X11 activa a través de VNC, sin tener que ingresar la contraseña.

Ejecutando

gnome-screensaver-command -d

como se sugirió en una publicación de blog no ayudó.

pantalla de ingreso al sistema

krlmlr
fuente
¿Ssh te arroja algún resultado o error?
Braiam
@Braiam: Puedo entrar ssh, ese no es el problema. Es para acceder a una pantalla X11 activa a través de VNC, pero sin tener que ingresar la contraseña.
krlmlr

Respuestas:

33

Supongo que tiene un sistema Linux reciente systemd(por ejemplo, Ubuntu 16.04 o más reciente).

Si necesita desbloquear su propia sesión , simplemente ejecute loginctl unlock-session(no se requiere root porque es su propia sesión). Si tiene varias sesiones y desea seleccionar solo una, ejecute loginctl list-sessionspara identificar la sesión y luego ejecute, por ejemplo loginctl unlock-session c187.

Si necesita desbloquear todas las sesiones , simplemente ejecute sudo loginctl unlock-sessions. Tenga en cuenta que esto desbloqueará inmediatamente TODAS las sesiones sin importar qué usuario esté ejecutando el protector de pantalla.


Si necesita más información para identificar la sesión correcta, puede intentar algo como esto:

loginctl list-sessions --no-legend | while read id rest; do echo; loginctl show-session $id; done
Mikko Rantalainen
fuente
3
Esta es la única respuesta que funciona en 16.04
limonada
Aparentemente no hay necesidad de sudo
limonada
1
Lo necesita sudosi desea desbloquear protectores de pantalla de TODAS las sesiones (incluidas las sesiones que no se ejecutan con su ID de usuario).
Mikko Rantalainen
También tenga sen cuenta el último en unlock-sessions. Si desea desbloquear solo su propia sesión, simplemente hágalo loginctl unlock-session.
Mikko Rantalainen
2
¡Debería ser la respuesta aceptada!
Brice
16

El problema con la ejecución de comandos como gnome-screensaver-commanddesde una sesión SSH generalmente es que no se conectan automáticamente al bus de sesión apropiado para la sesión de escritorio activa; por lo general, la configuración de la variable DISPLAY solucionará eso, por ejemplo, esto funciona para mí (iniciado sesión a través de SSH como el mismo usuario propietario de la sesión X bloqueada, que está en DISPLAY: 0):

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

para desbloquear y

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

para bloquear.

Alternativamente, puede alternar el estado activo utilizando dbus-send, por ejemplo

$ 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

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

conductor de acero
fuente
1
Desafortunadamente, ninguno de estos métodos desbloqueó el bloqueo de pantalla particular instalado en mi sistema (ver captura de pantalla). ¿Cómo puedo encontrar qué proceso es responsable de bloquear la pantalla de todos modos?
krlmlr
1
¿Los comandos devuelven un error? Si es así, por favor, publicarlo. Para ver si se está ejecutando un protector de pantalla diferente, puede intentarlo ps -fu <username> | grep saver; es posible que xscreensaverse esté utilizando en lugar de gnome-screensaver, en cuyo caso podría intentarlo DISPLAY=:0 xscreensaver-command -deactivate.
steeldriver
1
Probé esta respuesta en Ubuntu 14.04. No funciona Desactiva la pantalla, pero la pantalla permanece bloqueada.
kasperd
5

Lo siguiente funcionó para mí:

sudo killall gnome-screensaver

Especialmente útil cuando inicias sesión a través de SSH con otro usuario.

rosch
fuente
Confirmado, tuve este problema cuando el teclado no estaba escribiendo en la pantalla de desbloqueo, pero pude cambiar al terminal usando CTRL + ALT + F3 y este asesino del protector de pantalla ayudó. Luego, simplemente fui CTRL + ALT + F2 a la sesión que estaba bloqueada :)
jave.web
Esto funciona cuando X2Go muestra la pantalla de bloqueo y no responde :)
endolith
1

Tuve un problema con el bloqueo de pantalla (protector de pantalla) de gnome 3 atascado en una pantalla en blanco. Me las arreglé para trabajar alrededor de ella mediante la sustitución del gestor de ventanas gnome-shell.

Ctrl + Alt + F1 e inicie sesión en una consola virtual, luego:

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

( &Crea un fondo del nuevo gnome-shell para que pueda cerrar sesión en la consola virtual y mantenerlo en funcionamiento. Alternativamente, use Ctrl + Z para suspender el proceso de gnome-shell y bgponerlo en segundo plano).

Puede que no sea elegante, pero finalmente me permitió volver a mis aplicaciones de escritorio sin que gnome me obligara a cerrar sesión.

Ted Percival
fuente
Gracias, intentaré ver si reiniciar gnome-shellme funciona.
krlmlr
1

Tuve un problema similar donde la pantalla de desbloqueo no aceptaba la entrada del teclado a veces. La forma en que finalmente lo resolví fue matar los diversos gnome-screensaver procesos que se estaban ejecutando, así como un solo gnome-screensaver-dialogproceso. Supongo que cualquier proceso que estaba generando 2 sesiones de salvapantallas de gnome estaba arruinando mi pantalla de desbloqueo. En realidad, se supone que debo usar xscreensaver en su lugar, así que tal vez eso se metió con eso.

De todos modos, Ctrl+Alt+F1busque procesos de salvapantallas en ejecución ps -aux | grep screeny elimínelos a todos. Los comandos gnome y xscreensaver que figuran en las otras respuestas no me funcionaron.

Scott
fuente