내 홈 서버에서 SSH를 통한 X11 전달을 구성하려고 합니다.
서버는 moonraker
헤드리스 구성에서 Debian Jessie(호스트 이름)를 실행 중입니다.
내 클라이언트는 OS X 10.10을 실행하고 있습니다. 이전에 이 클라이언트를 사용하여 다른 서버에서 X11 전달을 사용한 적이 있으므로 문제가 내 Mac에 있는 것 같지 않습니다.
이 작업을 실행한 후 나타나는 정확한 오류 메시지 xclock
는 다음과 같습니다.
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0
인터넷 검색 후 다음을 확인했습니다.
1)$ ls -lA ~/.Xauthority
-rw------- 1 ssunder ssunder 55 Sep 21 21:53 /home/ssunder/.Xauthority
2)$ grep X11 /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
3) 내 고객은 ~/.ssh/config
다음과 같습니다.
ForwardX11 yes
ForwardX11Trusted yes
4)$ xauth list
moonraker/unix:10 MIT-MAGIC-COOKIE-1 d7e2e4a8c5aa4430bfcc2abb436940d2
5) sshd
디버그 레벨 2로 실행:# cat /var/log/auth.log | grep sshd | tail -n 100 | less
Sep 21 22:19:57 moonraker sshd[20089]: debug1: X11 connection requested.
Sep 21 22:19:57 moonraker sshd[20089]: debug2: fd 10 setting TCP_NODELAY
Sep 21 22:19:57 moonraker sshd[20089]: debug2: fd 10 setting O_NONBLOCK
Sep 21 22:19:57 moonraker sshd[20089]: debug1: channel 3: new [X11 connection from ::1 port 34632]
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: open confirm rwindow 2097152 rmax 16384
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: rcvd eof
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: output open -> drain
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: obuf empty
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: close_write
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: output drain -> closed
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: rcvd close
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: close_read
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: input open -> closed
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: send close
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: is dead
Sep 21 22:19:57 moonraker sshd[20089]: debug2: channel 3: garbage collecting
Sep 21 22:19:57 moonraker sshd[20089]: debug1: channel 3: free: X11 connection from ::1 port 34632, nchannels 4
또 무엇을 확인해야 할지 아시나요?
답변1
서버의 사용자가 사용자 정의 .ssh/rc
파일을 가지고 있거나 비표준 /etc/ssh/sshrc
파일을 가지고 있는 경우 xauth 콘텐츠가 올바르게 설정되지 않습니다.
sshd
매뉴얼 페이지 에서 :
If the file ~/.ssh/rc exists, sh(1) runs it after reading the environment
files but before starting the user's shell or command. It must not pro‐
duce any output on stdout; stderr must be used instead. If X11 forward‐
ing is in use, it will receive the "proto cookie" pair in its standard
input (and DISPLAY in its environment). The script must call xauth(1)
because sshd will not run xauth automatically to add X11 cookies.
사용자 정의 파일이 필요한 경우 rc
해당 파일에 추가하거나 매뉴얼 페이지에서 추가하세요.
if read proto cookie && [ -n "$DISPLAY" ]; then
if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
# X11UseLocalhost=yes
echo add unix:`echo $DISPLAY |
cut -c11-` $proto $cookie
else
# X11UseLocalhost=no
echo add $DISPLAY $proto $cookie
fi | xauth -q -
fi
답변2
이 오류 메시지가 나타나면 가장 먼저 확인해야 할 것은 디스크가 꽉 찼는지 여부입니다.
디스크가 꽉 차면,SSH에 키를 추가할 수 없습니다 .Xauthority
. 이로 인해 인증 오류가 발생합니다.