노력하다

노력하다

하지만로그인떨어져서루트 사용자로, 나는 원해요내 셀레늄 프로그램을 원격으로 실행루트 표시(내 원격 디스플레이 대신). 그래요아니요작동하는 것에 대해 이야기 ssh -X하지만 셀레늄을 사용하는 다른 nodejs 앱을 생성하는 nodejs 앱이 있습니다. 이 모든 것은 사용자 SSH 연결 없이 자동으로 수행됩니다. 하지만 셀레늄은 필요한 일부 jpg 파일을 렌더링하기 위해 일종의 디스플레이를 사용해야 합니다.

저는 많은 연구를 해왔지만 여전히 이 개념에 대해 고민하고 있습니다. 제가 사용한 정보의 주요 출처는 다음과 같습니다.

이것이 나의 이해이다:

  • 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

======================

노력하다

나는 다음과 같은 것들을 모두 시도했습니다:

  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_configssh -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를 사용하고 있습니다.

답변1

Selenium의 X 디스플레이만 필요한 경우 Xvfb("Virtual Framebuffer X Server")를 사용하여 두 번째 독립형 X 서버를 시작할 수도 있습니다. X 서버는 메모리 블록을 보이지 않는 프레임 버퍼로 사용하고 셀레늄이 X 서버에 연결된 것처럼 가장하도록 허용합니다.

man Xvfb특히 참조하십시오. 이것부분. 인증을 활성화하지 않고도 실행할 수 있으므로 누구나 연결할 수 있습니다.

이는 완전히 다른 웜 캔인 3D 가속(OpenGL)을 허용하지 않는다는 점에 유의하세요.

root일반적으로 다른 모니터, 특히 로그인된 모니터를 점유하려는 시도 는거대한보안 위험: 이 모니터에 연결된 사람은 누구나 키 입력(및 비밀번호)을 캡처하고 루트로 명령을 실행할 수 있습니다. 그렇기 때문에 일반적으로 이 작업을 수행할 수 없습니다.

답변2

나는 이것이 불가능하다는 결론에 도달했습니다 :(

이것이 작동하려면 어느 시점에 어딘가에 사용자 ssh가 있어야 합니다.

사용자 없이는 루트의 디스플레이를 장악할 수 없습니다.

관련 정보