ssh는 "채널 1에서 X11 전달 요청에 실패했습니다"라는 메시지를 리턴합니다.


33

X11 데스크탑 환경 유형을 실행하지 않는 원격 서버로 ssh하면 다음 메시지가 표시됩니다.

$ ssh user@server
X11 forwarding request failed

$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...

이 메시지를 어떻게 제거 할 수 있습니까?

답변:


38

이러한 메시지는 SSH 옵션 만 사용하여 3 가지 방법 중 하나를 통해 제거 할 수 있습니다. 항상 메시지를 보낼 /dev/null수도 있지만 이러한 방법은 메시지를 트래핑 및 덤프하지 않고 구성을 통해 메시지를 처리하려고합니다.

방법 # 1-xauth 설치

원격 서버 가 설치되지 .Xauthority않았기 때문에 사용자 파일에 항목을 만들 수 없다고 불평하고 있습니다 xauth. 따라서이 성가신 메시지를 없애기 위해 각 서버에 설치할 수 있습니다.

Fedora 19에서는 다음 xauth과 같이 설치됩니다 :

$ sudo yum install xorg-x11-xauth

그런 다음 ssh서버에 접속 을 시도 하면 사용자 .Xauthority파일 에 항목이 작성되고 있다는 메시지가 표시 됩니다.

$ ssh root@server
/usr/bin/xauth:  creating new authority file /root/.Xauthority
$

이후 로그인시 더 이상이 메시지가 표시되지 않습니다.

방법 # 2-ForwardX11을 통해 비활성화

sshSSH 매개 변수 ForwardX11을 포함 시켜 클라이언트가 X11 전달을 사용하지 않도록 지시 할 수 있습니다 .

$ ssh -o ForwardX11=no root@server

-x스위치를 사용 하여 동일한 작업을 수행 할 수 있습니다 .

$ ssh -x root@server

이것은 일시적으로이 메시지를 비활성화하지만 xauth원격 서버에 설치할 수 없거나 설치하지 않으려는 경우에 좋은 옵션 입니다.

방법 # 3-sshd_config를 통해 비활성화

일반적으로 이것이 기본값이지만 그렇지 않은 경우 sshd서버에서 X11Forwarding이 해제되도록 서버를 설정할 수 있습니다 /etc/ssh/sshd_config.

X11Forwarding no

세 가지 방법 중 일반적으로 # 2를 사용합니다. X11Forwarding대부분의 서버에서 자주 사용하고 싶지만 X11....경고 를보고 싶지 않기 때문입니다.

$ HOME / .ssh / config

이 메시지가 표시되지 않는 경우가 많습니다. 일반적으로 $HOME/.ssh/config파일에 맨 위에 다음 항목이있을 때만 나타납니다 .

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes

이 설정은 궁극적으로 X11..메시지 생성을 주도하고 있으므로 ForwardX11 yes기본적 으로 on으로 작동하려면 방법 # 2가 가장 적합 해 보이지만 ssh클라이언트의 관점 에서 특정 연결에 대해 선택적으로 비활성화하십시오 .

보안

일반적으로 ForwardX11 yes항상 실행하는 것은 좋지 않습니다 . 따라서 가장 안전한 매너로 SSH 연결을 운영하려면 다음을 수행하는 것이 가장 좋습니다.

  1. 포함하지 마십시오 ForwardX11 yes당신의 $HOME/.ssh/config파일
  2. 다음을 통해 필요할 때만 ForwardingX11을 사용하십시오. ssh -X user@server
  3. 가능하면 X11Forwarding서버에서 완전히 비활성화 하여 허용하지 않습니다.

참고 문헌



기록을 위해, 나는 그 메시지를 수신 원격 서버에서 X 클라이언트를 실행하려고합니다. $ DISPLAY가 설정되지 않았기 때문에 시작되지 않습니다. 첫 번째 제안으로 문제를 해결했습니다 : xauth 설치.
톰 엘리스

13

제 경우에는이 문자열을 추가 /etc/ssh/sshd_config하여 문제 를 해결했습니다.

X11UseLocalhost no

이것은 나를 위해 일했습니다 (서버에는 이미 xauth가 설치되어 있습니다). 감사.
폴 히긴스

이것은 내 문제를 해결하는 것처럼 보였지만 왜 그런지 이해하지 못합니다. 3 개의 동일한 데비안 7 머신이 있어야하는데 그 중 하나가 갑자기 locahostX11 포워딩을 받아들이지 않았습니다 . 다른 두 개의 X11 포워딩은 여전히 ​​작동합니다. 무엇이 바뀌었을 지 아십니까?
Kyle Strand

12

오늘 이것을 가로 질러 ssh 설정을 우연히 발견 할 때까지 잠시 동안 내 머리를 때렸다.

RHEL 7 (centOS, OEL 등)이고 ipv6이 비활성화 된 경우 다음이 필요합니다.

AddressFamily inet

/ etc / ssh / sshd_config에서 설정하십시오.


이와 관련된 오류 메시지 만있는 경우 ...
Jack Wasey

뭔지 알아? 나는 오늘 이것에 부딪 히고 그것을 봤고,이 기사를 발견했고, 4 년 전에 나의 자신의 의견을 발견했고, "OH YEAH THAT 'S THE PROBLEM."
Systemspoet

2

특정 서버에서이 메시지를 보지 않으려면 (예 : X11 전달 시도 중지) 다른 모든 연결에 대해 기본값을 ForwardX11 yes로 유지하려는 경우 약간의 다른 변형이 있습니다.

이 시나리오의 경우 ~ / .ssh / config에서 특정 호스트 (또는 범위)에 대한 X11 전달을 비활성화 할 수 있습니다. 이 같은:

host 10.1.1.*
ForwardX11 no 

감사의 말 : 기존의 (그리고 매우 완전한) 기존 답변에 약간의 꾸밈음입니다.


2

상세 모드 ( ssh -v user@host) 에서 클라이언트를 실행 하면

debug1: Remote: No xauth program; cannot forward with spoofing.

그러나 xauth실제로 서버에 설치되어 있다면 아마도 sshd 가 잘못된 위치 ( 일반적으로 / usr / X11R6 / bin / xauth ) 에서 xauth 실행 파일을 찾기 때문일 것입니다 . 하나를 설정하여 해결할 수 있습니다

XAuthLocation /usr/bin/xauth

에서 의 / etc / sshd를 / sshd_config를 (또는 무엇이든 서버로 구성되어 있습니다).


이것은 CentOS 7에서 나를 위해 일했습니다. 그것은 내가 본 정확한 오류 메시지입니다.
Brian Minton

이것은 내 문제였으며 Mac에 원격으로 로그인하려고했습니다. 올바른 주문은 XAuthLocation / opt / X11 / bin / xauth입니다.
Leon Avery

1

호스트별로 X11 전달 구성

이미 여기에있는 모든 훌륭한 답변 외에도 ForwardX11호스트별로 구성 할 수 있으므로 server이와 같이 실패 ~/.ssh/config하는 경우 다음 형식 의 파일에 항목을 추가 할 수 있습니다 .

Host server server.domain.dom
    ForwardX11 no

전체 구성 세트에 대한 동맹국으로 이와 같은 항목을 사용할 수도 있습니다.

Host my.server
    HostName server.domain.dom
    User user
    Port 1234
    ForwardX11 no

SSH 및 SCP에 대해 자동 완성 서버 이름을 설정 한 경우 특히 유용합니다 .


1

나는 sshd-xauth거의 10 년 된 버그 로 뛰어 들인 후에이 질문을 보았습니다. 두 번째 해결책은 첫 번째 우회 xauth이고 두 번째 해결책은 버그를 해결하는 것입니다.


해결 방법 1-xauth 무시

  • local-Xserver를 제공하는 로컬 시스템.
  • remote-Xserver로가는 데이터를 구동하는 응용 프로그램을 제공하는 원격 시스템

원격 /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

리모컨 ~/.Xauthority이 비어 있거나 존재하지 않습니다

로컬에서 :

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

테스트에서 로컬은 Ubuntu 18.05를, 원격은 Debian Jesse를 실행했습니다.

또한 이 솔루션 을 다른 질문에 대한 답변으로 게시했습니다 .


해결 방법 2- sshd / xauth 버그 해결

이 솔루션은 의 @systempoet 솔루션 과 비슷하지만 그 자체로는 충분하지 않습니다.

/etc/ssh/sshd_config원격 에서 수정 하는 것 외에도 :

AddressFamily inet

/etc/hosts 원격에서도 수정되었습니다.

::1     localhost ip6-localhost ip6-loopback

둘 중 하나라도 주석 처리 된 경우 오류 메시지

X11 forwarding request failed on channel 0

ssh -X ...통화 후 나타납니다 . 또한 /var/log/auth.log오류가 표시되었습니다.

sshd[...]: error: Failed to allocate internet-domain X11 display socket

버그를 수정하기위한 테스트 (수정 전) :

로컬 머신 :

$ Xephyr -ac -screen 1280x800 -br -reset -terminate  :2 &
$ DISPLAY=:2 ssh -X  user@remote
X11 forwarding request failed on channel 0

0

구성을 변경 한 후 알아 두어야 할 중요한 사항 중 하나는 sshd를 종료하여 변경 사항을 적용해야한다는 것입니다.

cat /var/run/sshd.pid | xargs kill -1

루트 사용자입니다.


-2
  1. /etc/ssh/sshd_configRHEL 호스트에서 다음 두 옵션을 설정하십시오.

    X11Forwarding yes X11UseLocalhost no

  2. sudo /etc/init.d/sshd reload

  3. sudo yum install xauth
  4. -X 스위치를 사용하여 RHEL 호스트로 다시 ssh하십시오. ssh -X yourname@rhelbox
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.