Ssh

如何鎖定遠端機器的螢幕?

  • March 16, 2019

來自https://unix.stackexchange.com/a/505644/674

當您使用 SSH 時,您可以使用 ssh -X 或 ssh -Y 訪問您連接的螢幕。程序可以完美地在一台機器上執行並在另一台機器上顯示。因此,如果您在遠端機器上通過 SSH 執行 light-locker,它將鎖定您的本地顯示器而不是遠端顯示器(就像執行 gnome-terminal 或任何其他命令將在遠端機器上執行它但在本地顯示它一樣)。

如果您希望螢幕再次鎖定,是的,您必須重新啟動它,但請注意從您要鎖定的 X 會話而不是 ssh 重新啟動它。

我 ssh 到一台機器,然後想鎖定它的螢幕。誰能告訴我為什麼我失敗了,我該怎麼辦?謝謝。

$ xscreensaver-command -lock
xscreensaver-command: warning: $DISPLAY is not set: defaulting to ":0.0".
xscreensaver-command: no screensaver is running on display :0.0

$ DISPLAY=:0 xscreensaver-command -lock
xscreensaver-command: no screensaver is running on display :0

不確定如何判斷遠端主機上沒有執行 X 伺服器:

$ ps -A | grep -i xorg
 448 ?        00:00:29 Xorg
 605 ?        00:00:27 Xorg
 766 tty7     05:19:26 Xorg
2175 ?        00:02:58 Xorg
3343 ?        00:00:24 Xorg
8520 ?        00:00:28 Xorg
12564 ?        00:00:22 Xorg
24655 ?        00:00:13 Xorg
26692 ?        00:00:28 Xorg
26704 ?        00:00:25 Xorg
26852 ?        00:00:29 Xorg
27034 ?        00:00:23 Xorg

你需要了解 X 的工作原理。你有你的本地機器 LOC 和遠端機器 REM 的 ssh。您有兩個 X 顯示: LOC:0.0 和 REM:0.0 。當您ssh -X REM從 LOC 執行時,您會在 REM 上創建一個新的虛擬 X 顯示,即“REM:10.0”並指向“LOC:0.0”。所以當你在 REM 上執行一個程序時,它的圖形會被發送到 REM:10 並從那裡發送到它們出現的 LOC:0.0。

如果您在 REM 上執行 VNC 伺服器,它將顯示為“REM:1.0”(例如)。您可以在同一台機器上執行許多不同的 X 顯示器,將應用程序的輸出發送到不同的物理或虛擬螢幕。

現在,當您在 REM 上連接時,如果有使用者在本地登錄,使用“REM:0.0”、“REM:1.0”或其他 X 顯示器(VNC 只是特殊的 X 顯示器),您可以通過 ssh 在此螢幕上顯示內容通過更改特殊變數“DISPLAY”的值。

如果您在機器的本地控制台上連接並執行,echo $DISPLAY您將得到 :0.0

如果您使用 ssh 從 LOC 連接到 REM,並希望在 REM 的螢幕上顯示您啟動的應用程序 (REM:0.0),請更改 DISPLAY 的值:

export DISPLAY=:0.0

執行一個程序,它將顯示在 REM 螢幕上(當然,如果會話是由同一使用者打開的)。

在您的情況下,“REM:0.0”上必須有一個開放會話,但情況並非如此。如果會話是使用 VNC 執行的,它必須是“REM:1.0”,所以要在那裡執行 xscreensaver,你必須相應地設置 DISPLAY:

export DISPLAY=:1.0
xscreensaver
xscreensaver-command -lock

引用自:https://unix.stackexchange.com/questions/506556