如何找到和使用 root 的我_小號磷LAY_一個__D一世小號磷大號一種是一種ndDISPLAY and權威?出現錯誤:MIT-MAGIC-COOKIE 無效
以 ROOT遠端登錄時,我想在ROOT 的顯示器(而不是我的遠端顯示器)**上遠端執行我的 selenium 程序。**我不是在談論做
ssh -X
(可行),而是我有一個 nodejs 應用程序生成另一個使用 selenium 的 nodejs 應用程序,所有這些都是自動的,沒有任何使用者 ssh’ing。但是 selenium 需要使用某種顯示來渲染我需要的一些 jpg 文件。我一直在研究很多問題,但我仍在為這個概念而苦苦掙扎……我一直在使用的主要資訊來源是:
- 在遠端 X 顯示器上打開一個視窗(為什麼“無法打開顯示器”)?(這個資訊最多)
- 我可以以 root 身份在另一個使用者的桌面上啟動圖形程序嗎?
- @Gilles 的所有答案 :)
以下是我的理解:
X 程序需要兩條資訊才能連接到 X 顯示器。
$DISPLAY
- 通常
:0
或:1
。- 當我親自去筆記型電腦並查看 root 的顯示(而不是遠端 ssh’ing)時,
$DISPLAY
設置為:0
or:1
。$XAUTHORITY
- 要使用的 Magic Cookie 在
~/.Xauthority
和 環境變數中定義$XAUTHORITY
。- 當我親自去筆記型電腦(而不是遠端登錄)時,
$XAUTHORITY
設置為/tmp/xauth-0-_0
(何時$DISPLAY=:0
)或/tmp/xauth-0-_1
(何時$DISPLAY=:1
)。=====================
嘗試
我已經嘗試了所有這些事情:
- 設置
$DISPLAY
和$XAUTHORITY
通過腳本
- 我有一個生成 nodejs selenium 應用程序的腳本。在執行 selenium 應用程序之前,我首先在腳本中導出了這兩個變數:
if [ -e "/tmp/xauth-0-_0" ] then export DISPLAY=":0" export XAUTHORITY="/tmp/xauth-0-_0" elif [ -e "/tmp/xauth-0-_1" ] then export DISPLAY=":1" export XAUTHORITY="/tmp/xauth-0-_1" fi #Then run the nodejs selenium app node index.js
我使用這種方法時得到的錯誤是**`Invalid MIT-MAGIC-COOKIE-1 key[10332:10332:0713/112221.602744:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: :0.0`** 2. 設置`X11Forwarding yes`,`/etc/ssh/sshd_config`但我認為這僅適用於`ssh -X` 3. 這是我打開 chrome 的其他嘗試:
[root@localhost test]# xauth list localhost:0 MIT-MAGIC-COOKIE-1 ….
[root@localhost test]# export XAUTHORITY=/tmp/xauth-0-_0
[root@localhost test]# export DISPLAY=localhost:0 [root@localhost test]# google-chrome [10673:10673:0713/141603.418401:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: localhost:0
[root@localhost test]# export DISPLAY=127.0.0.1:0 [root@localhost test]# google-chrome [10859:10859:0713/141617.346302:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: 127.0.0.1:0
我正在使用 Fedora 23(伺服器版)x86_64
如果您只需要一個用於 selenium 的 X 顯示器,您還可以使用
Xvfb
(“virtual framebuffer X server”)啟動第二個獨立的 X 伺服器。這個 X 伺服器使用一塊記憶體作為不可見的幀緩衝區,並允許 selenium 假裝它連接到 X 伺服器。有關詳細資訊,請參閱
man Xvfb
,尤其是。範例部分。您可以在未啟用授權的情況下啟動它,因此任何人都可以連接到它。請注意,這將不允許 3D 加速 (OpenGL),這是完全不同的蠕蟲罐。
一般來說,試圖接管另一台顯示器,尤其
root
是已登錄的顯示器,是一個巨大的安全風險:連接到該顯示器的任何人都可以擷取按鍵(和密碼),以 root 身份執行命令等。這就是為什麼通常你可以’不要這樣做。