X11 전달 요청이 실패했습니다.

X11 전달 요청이 실패했습니다.

ssh -Y/X ManjaroHostMac에서 사용해 보았지만 "X11 전달 요청 실패" 메시지가 표시되었습니다. 저는 지금 2주 동안 해결책을 찾고 있으며 비슷한 게시물에서 제안한 여러 가지 방법을 시도했습니다. 내 실수를 지적하면 많은 도움이 될 것입니다!

다음은 제가 수행한 몇 가지 실험입니다. 명확하게 하기 위해 저는 항상 HostA에서 HostB로 SSH를 통해 연결합니다. HostA는 X 서버이자 SSH 클라이언트이고 HostB는 SSH 서버입니다.

실험 1

HostA: 내 맥북.
HostB: 또 다른 Linux 클러스터입니다.
훌륭하게 작동하며 Mac에 GUI 창이 나타납니다.
HostA에서는 echo $DISPLAY --> /private/tmp/com.apple.launchd.6AxM1TJrRh/org.xquartz:0 HostB에서는 echo $DISPLAY --> localhost:10.0 그래서 내 Mac 쪽이 매우 잘 작동하고 있다고 생각합니다.

실험 2

HostA: 내 맥북. HostB: Manjaro Linux Lenovo.
HostA: DISPLAY는 /private/tmp/com.apple.launchd.6AxM1TJrRh/org.xquartz:0입니다. HostB: DISPLAY는 비어 있습니다.
ssh -Yvvv의 디버그 정보입니다.

...
...
...
debug1: Requesting X11 forwarding with authentication spoofing.
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
debug1: channel 2: setting env LC_TERMINAL_VERSION = "3.4.15"
debug1: channel 2: setting env LANG = "en_US.UTF-8"
debug1: channel 2: setting env LC_TERMINAL = "iTerm2"
debug1: mux_client_request_session: master session id: 2
Last login: Wed Nov  9 13:55:34 2022 from 192.168.0.194
X11 forwarding request failed

실험 3

일부 인터넷 설정 때문인 경우 Manjaro Linux Lenovo에서 ssh -Y 127.0.0.1을 사용해 보았습니다.

호스트 A = 호스트 B = Manjaro Linux Lenovo

호스트 A:디스플레이=:0

HostB(ssh 이후): DISPLAY가 비어 있습니다.

ssh -Yvvv의 디버깅 정보는 다음과 같습니다.


 ssh -Yvvv  127.0.0.1                                                           
...
...
...
debug1: client_input_hostkeys: no new or deprecated keys from server
debug3: receive packet: type 91
debug2: channel_input_open_confirmation: channel 0: callback start
debug2: x11_get_proto: /usr/bin/xauth  list :0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 0: request x11-req confirm 1
debug3: send packet: type 98
debug2: fd 3 setting TCP_NODELAY
debug3: set_sock_tos: set socket 3 IP_TOS 0x48
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug3: send packet: type 98
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug3: receive packet: type 100
debug2: channel_input_status_confirm: type 100 id 0
**X11 forwarding request failed on channel 0**
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Last login: Wed Nov  9 14:43:39 2022 from 127.0.0.1

여전히 "채널 0에서 X11 전달 요청이 실패했습니다"가 표시됩니다.

이것은 내 Manjaro sshd_config 파일입니다.

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
AllowTcpForwarding yes
AllowAgentForwarding yes
PermitRootLogin yes

ssh_config 파일

HOST *
    #ServerAliveInterval 60
    #ServerAliveCountMax 5
    ForwardAgent yes
    ForwardX11 yes
    #ControlPersist yes
    ControlMaster auto
    ForwardX11Trusted yes

내 Mac ssh_config 파일

HOST *
    ServerAliveInterval 60
    ServerAliveCountMax 5
    ForwardAgent yes
    ForwardX11 yes
    ControlPersist yes
    ControlMaster auto
    ControlPath ~/.ssh/master-%r@%h:%p
    ForwardX11Trusted yes
    identityfile ~/.ssh/id_rsa_gmail

모든 방법을 시도했지만 문제를 해결하지 못한 것 같습니다. 누구든지 도와주시면 감사하겠습니다!

답변1

내 경우 ssh 클라이언트 메시지 "X11 전달 요청 실패"의 이유는 ssh 데몬(서버에 있음)이 IPv6만 시도했기 때문에 포트 6000+(X11 전달 포트 범위)에 바인딩할 수 없었기 때문입니다. 작동하지 않습니다(도커 컨테이너에 있으므로 닫혀 있을 수 있음).

/etc/sshd_config해결책은 한 줄을 다음에서 변경하는 것입니다: from AddressFamily any(기본값)에서 AddressFamily inet(즉,아니요inet6).

답변2

가장 일반적인 원인은 xauth서버에 패키지와 실행 파일이 없기 때문입니다. 답을 찾기 위해 달려보세요 which xauth. 일반적으로 apt install xauth그런 것을 설치할 수 있습니다 .

설치된 경우 X11 전달이 계속 실패합니다. 서버 측에서 sshd 디버깅을 활성화할 수도 있습니다.

서버에 대한 루트 액세스 권한이 있다고 가정하고 sshd를 시작하는 스크립트를 찾으십시오. systemd 를 사용하여 최신 시스템에서 sudo systemctl status ssh찾을 수 있습니다. 내 이름은 /lib/systemd/system/ssh.service으로 시작하는 줄을 찾습니다 ExecStart=. sshd의 디버깅 옵션은 -d.

를 사용하여 서버 로그 파일을 확인할 수 있습니다 journalctl -b -a -u ssh.

행운을 빌어요.

답변3

큰 도움을 주신 @Jdehan에게 감사드립니다! 이제 괜찮아!

sudo를 사용하여 원격 서버의 디버그 모드에서 sshd를 설정했습니다. 디버깅 정보에서 sshd 서비스가 /etc/ssh/sshd_config 파일만 로드하고 .ssh/sshd_config 파일은 로드하지 않은 것으로 나타났습니다! 따라서 ~/.ssh/sshd_config에 대한 모든 편집 내용은 실제로 시스템에 로드되지 않았습니다.

~/.ssh 폴더에서는 key 및 Know_host 파일과 구성만 유효합니다. 그러나 -f를 사용하여 파일을 명시적으로 로드하지 않는 한 .ssh의 ssh_config, sshd_config는 그렇지 않습니다.

관련 정보