![노력하다](https://linux55.com/image/115433/%EB%85%B8%EB%A0%A5%ED%95%98%EB%8B%A4.png)
하지만로그인떨어져서루트 사용자로, 나는 원해요내 셀레늄 프로그램을 원격으로 실행루트 표시(내 원격 디스플레이 대신). 그래요아니요작동하는 것에 대해 이야기 ssh -X
하지만 셀레늄을 사용하는 다른 nodejs 앱을 생성하는 nodejs 앱이 있습니다. 이 모든 것은 사용자 SSH 연결 없이 자동으로 수행됩니다. 하지만 셀레늄은 필요한 일부 jpg 파일을 렌더링하기 위해 일종의 디스플레이를 사용해야 합니다.
저는 많은 연구를 해왔지만 여전히 이 개념에 대해 고민하고 있습니다. 제가 사용한 정보의 주요 출처는 다음과 같습니다.
- 원격 X 모니터에서 창 열기("모니터를 열 수 없습니다" 이유)?(이것이 가장 많은 정보를 가지고 있습니다)
- 다른 사용자의 데스크탑에서 루트로 그래픽 프로그램을 시작할 수 있습니까?
- 모든 답변은 @Gilles에서 왔습니다 :)
이것이 나의 이해이다:
- X 프로그램은 X 디스플레이에 연결하기 위해 두 가지 정보가 필요합니다.
$DISPLAY
- 보통
:0
또는:1
. - 실제로 내 노트북으로 가서 루트의 디스플레이를 보면 (원격 SSH 대신) 또는
$DISPLAY
로 설정 되어 있습니다 .:0
:1
- 보통
$XAUTHORITY
- 사용할 매직 쿠키는
~/.Xauthority
환경 변수에 정의되어 있습니다$XAUTHORITY
. - 실제로 랩톱에 액세스할 때(원격으로 SSH 연결이 아닌) (when ) 또는 (when )
$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
X11Forwarding yes
설정이 있지만 이 설정은 다음에 만 적용되는 것 같습니다./etc/ssh/sshd_config
ssh -X
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를 사용하고 있습니다.
답변1
Selenium의 X 디스플레이만 필요한 경우 Xvfb
("Virtual Framebuffer X Server")를 사용하여 두 번째 독립형 X 서버를 시작할 수도 있습니다. X 서버는 메모리 블록을 보이지 않는 프레임 버퍼로 사용하고 셀레늄이 X 서버에 연결된 것처럼 가장하도록 허용합니다.
man Xvfb
특히 참조하십시오. 이것예부분. 인증을 활성화하지 않고도 실행할 수 있으므로 누구나 연결할 수 있습니다.
이는 완전히 다른 웜 캔인 3D 가속(OpenGL)을 허용하지 않는다는 점에 유의하세요.
root
일반적으로 다른 모니터, 특히 로그인된 모니터를 점유하려는 시도 는거대한보안 위험: 이 모니터에 연결된 사람은 누구나 키 입력(및 비밀번호)을 캡처하고 루트로 명령을 실행할 수 있습니다. 그렇기 때문에 일반적으로 이 작업을 수행할 수 없습니다.
답변2
나는 이것이 불가능하다는 결론에 도달했습니다 :(
이것이 작동하려면 어느 시점에 어딘가에 사용자 ssh가 있어야 합니다.
사용자 없이는 루트의 디스플레이를 장악할 수 없습니다.