새 콘솔을 열 때마다 오류 메시지가 나타납니다.
xxd ~/.Xauthority
00000000: 0100 0006 6465 6269 616e 0002 3130 0012 ....debian..10..
00000010: 4d49 542d 4d41 4749 432d 434f 4f4b 4945 MIT-MAGIC-COOKIE
00000020: 2d31 0010 1fba cba8 1f6a f8b6 e00d 8c1a -1.......j......
00000030: c7cb 7d86 0100 0006 6465 6269 616e 0001 ..}.....debian..
00000040: 3000 124d 4954 2d4d 4147 4943 2d43 4f4f 0..MIT-MAGIC-COO
00000050: 4b49 452d 3100 1050 f7f6 b85b 77e1 49e4 KIE-1..P...[w.I.
00000060: a0c6 470d 7b11 a9 ..G.{..
어떻게 고치나요?
답변1
Invalid MIT-MAGIC-COOKIE-1 keyxhost: unable to open display ":0"
실제로 같은 줄에 두 개의 오류 메시지가 인쇄됩니다.
Invalid MIT-MAGIC-COOKIE-1 key
xhost: unable to open display ":0"
X11 GUI를 사용하여 로그인하면 세션은 자동으로 DISPLAY
환경 변수와 세션별 액세스 키( ~/.Xauthority
환경 변수로 지정된 파일에 저장됨 XAUTHORITY
)를 가져옵니다.
콘솔 로그인은 GUI 로그인과 별개이므로 콘솔 로그인 세션은 자동으로 로그인을 선택하지 않습니다. xhost
먼저 GUI 세션에 대한 액세스 권한이 없으면 GUI 세션에 대한 액세스 제어를 구성할 수 없습니다.
GUI 세션이 종료되고 X11 서버가 다시 시작되면 X11 서버 측은 이전 키를 자동으로 무효화하는 새 세션 키를 생성합니다. 그러나 이전 세션 키는 사용자 .Xauthority
파일에 남아 있을 수 있습니다. 다음에 GUI에 로그인하면 자동으로 교체됩니다. 따라서 파일에 MIT-MAGIC-COOKIE-1 키가 있다고 해서 반드시 MIT-MAGIC-COOKIE-1 키가 .Xauthority
있어야 한다는 의미는 아닙니다.현재의열쇠.
를 실행하는 경우 pgrep -a Xorg
와 유사한 X 서버 프로세스에 대한 명령줄 인수가 표시될 수 있습니다 Xorg -nolisten tcp -auth <some path> <other options...>
. 이 -auth
옵션으로 지정된 경로는 현재 서버측 세션 키 파일입니다. 루트 액세스 권한이 있는 경우 eg를 사용하여 이를 보고 자신의 파일 내용과 비교할 수 있습니다 . xauth -f <some path> list
출력 은 다음과 같은 줄 또는 여러 줄이 됩니다..Xauthority
xauth list
debian/unix:0 MIT-MAGIC-COOKIE-1 <actual key in hexadecimal>
서버 측 키 파일은 항상 한 줄이어야 하지만 X11 전달과 함께 SSH 연결을 사용하는 경우 자체 파일에 eg 또는 더 높은 디스플레이 번호로 시작하는 추가 줄이 있을 수 있습니다 .Xauthority
.debian/unix:10
파일 xauth list
출력 .Xauthority
에 표시된 단일 행과 정확히 일치하는 행이 포함되어 있으면 xauth -f <some path> list
X 서버에 액세스할 수 있습니다. 일치하는 행이 없으면 X 서버는 오류와 함께 요청을 거부합니다 Invalid MIT-MAGIC-COOKIE-1 key
.
귀하 또는 유사한 로그인 스크립트에 명령이 있을 수 있다고 생각합니다 xhost
. 실행하기 전에 변수가 존재하는지 테스트하는 테스트로 이를 래핑해야 합니다. 예를 들면 다음과 같습니다.~/.profile
~/.bashrc
$DISPLAY
xhost
xhost +local:
예를 들어
if [ "$DISPLAY" != "" ]
then
xhost +local:
fi
~/.Xauthority
하지만 파일의 기본 위치를 사용하고 있고 이 작업을 수행하는 경우오직GUI 관리 도구를 사용할 때 sudo
루트 액세스를 허용하려면 더 안전한 방법이 있을 수 있습니다. xhost +local:
에 다음을 추가 할 수 있습니다 ~/.bashrc
.
if [ "$SUDO_USER" != "" ] && [ "$DISPLAY" != "" ]
then
export XAUTHORITY=$(grep "^${SUDO_USER}:" /etc/passwd | cut -d : -f 6)/.Xauthority
fi
이는 GUI 세션의 보안을 완화하지 않고 루트가 모든 것을 읽을 수 있다는 사실을 활용합니다(따라서 홈 디렉토리가 옵션으로 내보낸 NFS 마운트인 경우 작동하지 않습니다 root_squash
). 이를 사용하면 변수가 개인 사용자 계정의 홈 디렉터리에 있는 파일을 직접 가리키도록 설정 sudo
됩니다 .XAUTHORITY
.Xauthority
(또한 이 트릭은 을 사용하는 경우에는 작동하지 않습니다 sudo su -
. 대신 사용하고 sudo -i
유사한 스니펫을 또는 에 추가하십시오. 그러나 이러한 파일을 편집할 때는 주의하십시오. 불행한 실수로 인해 작동하는 루트 쉘을 다시 가져오기 어려울 수 있습니다. )/root/.bashrc
/root/.profile