SSH를 통해 내 연구실의 클러스터에 액세스하려고 시도했을 때 제대로 작동했습니다. 하지만 그러면 나는 아무것도 할 수 없습니다:
user@users:~> nautilus
X11 connection rejected because of wrong authentication.
Could not parse arguments: Cannot open display
또는
user@users:~> gedit
X11 connection rejected because of wrong authentication.
(gedit:151222): Gtk-WARNING **: cannot open display: localhost:11.0
그것은 오늘날까지 작동합니다...변경 사항이 있는지 확인하는 방법을 모르겠습니다. 이 컴퓨터의 루트 비밀번호가 없습니다. 제가 할 수 있는 일이 있나요?
이 오류에 대해 다음과 같은 내용을 많이 읽었지만 아무 것도 문제를 해결하지 못합니다.
편집하다:
로컬 운영 체제는 Ubuntu 16이고 서버는 OpenSuse입니다. 저는 이렇게 연결합니다.
ssh -XY -p22 [email protected]
편집 2:
user@users:~> env
MODULE_VERSION_STACK=3.1.6
LESSKEY=/etc/lesskey.bin
NNTPSERVER=news
INFODIR=/usr/local/info:/usr/share/info:/usr/info
MANPATH=/usr/local/man:/usr/share/man
HOSTNAME=users
XKEYSYMDB=/usr/share/X11/XKeysymDB
HOST=users
TERM=xterm-256color
SHELL=/bin/bash
PROFILEREAD=true
HISTSIZE=1000
SSH_CLIENT=10.44.0.1 49729 22
MORE=-sl
SSH_TTY=/dev/pts/2
JRE_HOME=/usr/lib64/jvm/jre
USER=user
LS_COLORS=no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:
LD_LIBRARY_PATH=/usr/local/cuda-5.5/lib:/usr/local/cuda-5.5/lib64:
XNLSPATH=/usr/share/X11/nls
ENV=/etc/bash.bashrc
HOSTTYPE=x86_64
FROM_HEADER=
MSM_PRODUCT=MSM
PAGER=less
CSHEDIT=emacs
XDG_CONFIG_DIRS=/etc/xdg
MINICOM=-c on
MODULE_VERSION=3.1.6
MAIL=/var/mail/user
PATH=/usr/local/cuda-5.5/bin:/home/user/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
CPU=x86_64
JAVA_BINDIR=/usr/lib64/jvm/jre/bin
INPUTRC=/home/user/.inputrc
PWD=/home/user
JAVA_HOME=/usr/lib64/jvm/jre
LANG=en_US.UTF-8
PYTHONSTARTUP=/etc/pythonstart
MODULEPATH=/usr/share/modules:/usr/share/modules/modulefiles
LOADEDMODULES=
QT_SYSTEM_DIR=/usr/share/desktop-data
SHLVL=1
HOME=/home/user
LESS_ADVANCED_PREPROCESSOR=no
OSTYPE=linux
LS_OPTIONS=-N --color=tty -T 0
XCURSOR_THEME=DMZ
MSM_HOME=/usr/local/MegaRAID Storage Manager
WINDOWMANAGER=/usr/bin/gnome
G_FILENAME_ENCODING=@locale,UTF-8,ISO-8859-15,CP1252
LESS=-M -I
MACHTYPE=x86_64-suse-linux
LOGNAME=user
XDG_DATA_DIRS=/usr/share:/etc/opt/kde3/share:/opt/kde3/share
SSH_CONNECTION=172.17.10.15 22
MODULESHOME=/usr/share/modules
LESSOPEN=lessopen.sh %s
INFOPATH=/usr/local/info:/usr/share/info:/usr/info
DISPLAY=localhost:12.0
XAUTHLOCALHOSTNAME=users
LESSCLOSE=lessclose.sh %s %s
G_BROKEN_FILENAMES=1
JAVA_ROOT=/usr/lib64/jvm/jre
COLORTERM=1
_=/usr/bin/env
답변1
Xauthority 미니 사용법
X11 디스플레이 서버를 실행하는 GNU/Linux 시스템에서 이 파일은 ~/.Xauthority
디스플레이에 대한 연결을 승인하는 데 사용되는 인증 쿠키 또는 암호화 키를 저장합니다. 대부분의 경우 인증 메커니즘은 대칭 쿠키라고 하는 대칭 쿠키입니다 Magic Cookie
. 서버와 클라이언트는 동일한 쿠키를 사용합니다.
각 X11 인증 쿠키는 해당 시스템의 인증된 사용자에 의해 제어됩니다. 인증 쿠키는 일반 텍스트 보안 토큰으로 저장되므로 파일에 대한 권한은 8진수 형식으로 소유자에게만 적용 ~/.Xauthority
되어야 합니다 . 그러나 인증 파일에 대한 권한은 적용되지 않습니다.rw
600
사용자는 이 xauth
프로그램을 사용하여 인증 쿠키를 나열, 내보내기, 생성 또는 삭제할 수 있습니다. 다음 명령은 입니다 DISPLAY 32
.
xauth add localhost:32 - `mcookie`
X11 전달을 사용할 때는 일반적으로 쿠키를 수동으로 생성하고 조작할 필요가 없습니다. X11 프록시가 원격 컴퓨터에서 시작되고 인증 쿠키가 로컬 모니터에서 자동으로 생성되기 ssh
때문 입니다. ssh
그러나 일부 구성의 경우 인증 쿠키를 수동으로 생성하고 로컬 컴퓨터에 복사해야 할 수도 있습니다.
이는 세션 내에서 수행된 ssh
다음 scp
쿠키를 복사하는 데 사용될 수 있습니다.
ssh
원격 시스템에 들어가십시오:
ssh -XY user@remote
현재 X11 디스플레이를 확인하여 인증 쿠키가 있는지 확인하세요.
echo $DISPLAY
xauth list
명명된 환경 변수가 없으면 $DISPLAY
X11 에이전트가 제대로 시작될 수 없습니다. 이는 일반적 으로 DISPLAY 0
로컬로 로그인한 사용자이며 xserver가 로컬로 시작될 때만 실행됩니다 xinit
. X11 전달을 활성화하기 위해 X11 서버를 로컬로 시작할 필요가 없습니다 ssh
.
$DISPLAY
환경 변수가 설정되었지만 해당 디스플레이 번호에 해당하는 인증 쿠키가 없는 경우 다음과 같이 하나를 만들 수 있습니다.
xauth add $DISPLAY - `mcookie`
이제 쿠키가 있는지 확인합니다.
xauth list
쿠키를 복사하여 컴퓨터에서 로컬로 병합할 수 있습니다.
user@remote> xauth nextract ~/xcookie $DISPLAY
user@remote> exit
user@local> scp user@remote:~/xcookie ~/xcookie
user@local> xauth nmerge ~/xcookie
그런 다음 쿠키가 설치되었는지 확인합니다.
user@local> xauth list
X11 전달 SSH 연결을 사용해 보세요.
지침~/.Xauthority
~/.Xauthority
사용자가 액세스할 수 있는 각 디스플레이에 대한 모든 인증 정보가 포함된 바이너리 파일입니다. 각 레코드는 2바이트로 구분됩니다 0x0100
. 각 필드 앞에는 필드의 바이트 수를 16진수로 표시합니다. 모든 텍스트는 16진수 ASCII로 인코딩됩니다. 다음 표는 MIT MAGIC COOKIE 인증의 가장 일반적인 구성의 기본 구조입니다.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0100 0004 61616161 0002 3435 0012 4d49542d4d414749432d434f4f4b49452d31 0010 c0bdd1c539be89a2090f1bbb6b414c2c
----------------- ----------- ------------------ ------------ ---------------------- ------------- -------------------------------------- ------------ ---------------------------------------
start-of-record 0xNumBytes 0xASCII Hostname 0xNumBytes 0xASCII Display Num 0xNumBytes 0xASCII Auth Type 0xNumBytes 0xkey
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
맨 윗줄은 명령을 ~/.Xauthority
통해 xauth nlist
파일에서 검색할 수 있습니다 . 물론 귀하의 인증 파일에는 제 예와 다른 정보가 포함됩니다.
보안 확장 프로그램이 X11 서버와 함께 사용되는 경우 각 인증 라인에는 쿠키당 시간 제한 인증을 포함하여 여러 구성 옵션이 있습니다.
답변2
설명대로여기xauth
, 긴 토끼굴에 빠지지 않도록 지금은 전혀 다른 이유로 비슷한 증상이 나타나고 있음을 지적하고 싶습니다 .
Snap을 사용하여 설치된 모든 항목은 작동하지 않습니다. 그래서 xeyes
and는 xclock
작동할 수 있지만 Ubuntu를 새로 설치 chromium-browser
하거나 firefox
Ubuntu에서는 작동하지 않습니다. 이는 HOME="$SNAP_USER_DATA"
X가 Xauthority 파일이 있을 것으로 예상하는 위치를 방해하는 Snap 기본 설정과 관련이 있습니다 .
해결 방법은 간단히 다음을 수행하는 것입니다.
export XAUTHORITY=$HOME/.Xauthority
원격 X11 응용 프로그램을 실행하기 전.
su
또한 루트가 아닌 사용자로 연결하고 애플리케이션을 /run 사용하려고 하면 sudo
동일한 오류가 발생할 수 있습니다.
왜냐하면
바이너리는 변수와 [사용자] 파일
xauth
의 조합을 사용합니다.$DISPLAY
/home/.Xauthority
이 조합이 더 이상 현재 사용자와 일치하지 않기 때문에 이 오류가 표시됩니다.
답변3
GUI를 사용하고 싶었던 소프트웨어를 설치하려고 할 때 이 문제에 부딪혔습니다(즉, GUI 없이 설치할 방법을 찾을 수 없었습니다). 내 문제는 실행 파일을 실행 sudo
하고 sudo
잘못 인증하려고 한다는 것입니다 .
팁: xhost
다음 명령을 사용하세요.
이 명령은 xhost
사용자에게 X11 연결 액세스 권한이 있는지 알려주므로 유용합니다.
제 경우에는 사용자가 다음에 액세스할 수 있습니다.
fred@machinename $ xhost
access control disabled, clients can connect from any host
SI:localuser:fred
하지만 다음을 사용하면 sudo
다음에 액세스할 수 없습니다.
fred@machinename $ sudo xhost
X11 connection rejected because of wrong authentication.
xhost: unable to open display "localhost:10.0"
이 사실을 알아낸 후에는 내가 실행 중인 프로그램에 sudo
인증 오류가 발생하는 이유가 설명되었습니다.
내 솔루션
이 문제를 해결하기 위해 다음을 수행했습니다.
가치를 얻으세요$DISPLAY
fred@machinename $ echo $DISPLAY
localhost:10.0
의 숫자와 일치하는 매직 쿠키 값을 가져옵니다 $DISPLAY
. 제 경우에는 다음 값입니다 10
.
fred@machinename $ xauth list
machinename:4 MIT-MAGIC-COOKIE-1 e76c006944a28a5dbd3c54a0deadbeef
machinename/unix:4 MIT-MAGIC-COOKIE-1 e76c006944a28a5dbd3c54a0deadbeef
machinename/unix:10 MIT-MAGIC-COOKIE-1 cdead42e9b4c159505c0c830deadbeef
사용자를 루트로 변경합니다.
fred@machinename $ sudo su -
Xauthority에 매직 쿠키 값을 추가합니다.
root@machinename # xauth add gcashvapp511u/unix:10 MIT-MAGIC-COOKIE-1 cdead42e9b4c159505c0c830deadbeef
올바르게 추가되었는지 확인하세요.
root@machinename # cat ~/.Xauthority
machinename10MIT-MAGIC-COOKIE-1���.�L���0[���[root@machinename ~]# export DISPLAY=localhost:10.0
작동하는지 확인하세요.
root@machinename # xhost
access control disabled, clients can connect from any host
SI:localuser:fred
그런 다음 프로그램을 루트로 실행했고 마침내 설치에 꼭 필요한 GUI를 실행할 수 있었습니다.