ssh 및 sudo는 있지만 $DISPLAY는 없습니다.

ssh 및 sudo는 있지만 $DISPLAY는 없습니다.

일반적으로 나는 X 애플리케이션을 사용하기 위해 SSH를 통해 이 작업을 수행합니다.sudo su

ssh -X server

OKI 로그인

xauth list $DISPLAY

이게 나에게 다시 돌아온다

server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

그럼 내가 할게

sudo su
xauth add server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

X 응용 프로그램을 실행한 후... 알겠습니다. 맞습니다.

문제는 Centos7에 있습니다. 저도 마찬가지입니다.

xauth list $DISPLAY

아무것도 반환하지 않습니다. MIT의 매직 쿠키를 추가해 보았습니다.

xauth list

그러나 물론 그것은 작동하지 않습니다. SSH를 통한 일반 X 전달, sudo가 필요하지 않습니다.

sshd 설정은 3개 서버에서 동일합니다.

  1. 여유 소프트웨어일하다
  2. 마력 일하다
  3. CentOS7 작동 안함

답변1

또 다른 해결책은 현재 사용자의 .Xauthority 파일을 루트 사용자의 .Xauthority 파일과 병합하는 것입니다.

  1. ssh user@host
  2. 루트도 액세스할 수 있도록 .Xauthority 파일 권한을 변경하십시오.
  3. sudo su - root
  4. xauth merge /home/users/user/.Xauthority

시험

gedit somefile.log

gedit 창을 열어야 합니다.

답변2

솔루션을 영구적으로 만들려면 .bashrc로그인한 사용자의 파일을 수정하여 추가 할 수 있습니다.

if [ -z "$XAUTHORITY" ]; then
    export XAUTHORITY=$HOME/.Xauthority
fi

sudoers또한 다음 줄을 추가하여 파일을 업데이트해야 합니다.

Defaults env_keep+="DISPLAY XAUTHORITY"

루트에 로그인한 사용자의 파일에 대한 읽기 권한이 있으면 .XauthorityX 응용 프로그램을 사용할 수 있습니다 .

답변3

해결책을 찾으세요. 여기에서 복사한 대체 방법블로그 이 스크립트를 사용하세요

userfirst=sshloginuser
usersecond=sudoorsuuser

$usersecond@host$

    su - $userfirst -c 'xauth list' |\
         grep `echo $DISPLAY |\
             cut -d ':' -f 2 |\
             cut -d '.' -f 1 |\
             sed -e s/^/:/`  |\
         xargs -n 3 xauth add

아니면 그냥 user1로 로그인하세요

xauth list

su 또는 sudo su user2

xauth add OUTPUTOFXAUTHLIST

답변4

매우 간단한 범용 명령:

sudo xauth merge /home/$USER/.Xauthority

그러면 루트 환경이 활성화되고 현재(루트가 아닌) 사용자의 xauth 정보가 병합됩니다.

Slackware 댓글에 보고된 소유권 문제를 방지하는 또 다른 옵션은 다음과 같습니다.

cat ~/.Xauthority | sudo xauth merge -

관련 정보