Linux에서 Mac으로의 SSH 전달 X11 디스플레이가 잠시 후에 사라짐


10

Mac (10.7.2)에서 Linux (Ubuntu 8.04)로 로그인 할 때 ssh가 X11 연결을 전달할 때 새롭고 까다로운 문제가 있습니다. ssh -X를 사용하여 원격 컴퓨터에 로그인하고 해당 셸에서 X11 기반 응용 프로그램을 시작하는 데 문제가 없습니다.

최근에 시작된 것은 전달 된 디스플레이가 차단되어 있기 때문에 (몇 시간 정도) 같은 쉘에서 X11 응용 프로그램을 추가로 호출 할 수 없다는 것입니다. 예를 들어 xterm을 시작하려고 할 때 잘못된 DISPLAY 설정에 대한 일반적인 메시지가 나타납니다.

xterm Xt 오류 : 디스플레이를 열 수 없습니다 : localhost : 10.0

그러나 내가 로그인 할 때 바로 시작한 X11 응용 프로그램은 여전히 ​​똑같은 디스플레이 (localhost : 10.0)를 사용하여 여전히 잘 시작되었습니다.

sshd_config에서 자세한 로깅을 설정했으며 실패한 xterm 시작 시도에 대한 응답으로 /var/log/auth.log 파일에서이를 볼 수 있습니다.

sshd [22104] : 채널 8 : 열기 실패 : 관리 상 금지 : 열기 실패

서버에 -X를 다시 ssh하고 새 쉘을 시작하고 새 디스플레이 (localhost : 11.0)를 할당하면 동일한 프로세스가 반복됩니다. ), 몇 시간 후에 해당 쉘에서 새로운 것을 시작할 수 없습니다.

세부 사항 : Ubuntu 8.04에서 실행되는 OpenSSH sshd 서버는 기본 Apple X 서버와 함께 Lion (10.7.2)을 실행하는 Mac으로 전달됩니다. 시스템은 하나의 스위치로 이더넷 LAN에 연결됩니다. 두 컴퓨터 모두 방화벽을 실행하고 있지 않습니다. 최근 (며칠 전)까지이 설정은 완벽하게 작동하여 다음에 어디를 볼지에 대해 미스터리했습니다. 나는 결코 X11 또는 SSH 전문가가 아니지만 좋은 유닉스 / 리눅스 경험이있다. 클라이언트 또는 서버 구성에서 sshd_config의 TCPKeepAlive를 no로 설정하고 "host + localhost"를 설정하는 등 몇 가지 옵션을 변경하려고 시도했지만 클라이언트 또는 서버 구성에서 명백한 변화는 없었습니다.

동일한 네트워크 및 스위치를 통해 Linux 11.10 랩톱에서 동일한 원격 호스트에 로그인하면이 문제가 발생하지 않습니다. Mac에서 동일한 실험이 실패하는 동안 동일한 ssh 로그인 쉘에서 xterm을 몇 시간 후에 호출 할 수 있습니다 ( 오늘 아침에 테스트되었으므로 Mac 관련 문제 인 것 같습니다.

원격 시스템 (sshd 서버)에 "LogLevel DEBUG3"이 설정되어 있고 클라이언트 연결이 변경되지 않은 경우 /var/log/auth.log는 밤새 연결 상태 보고서에 약간의 변경 사항을 표시합니다. 이는 사용 된 포트 번호입니다. 리눅스 머신에서 하나의 성공적인 ssh 세션에 의해 (내 생각에), 아래의 연결 # 7 :

sshd [20173] : debug3 : 채널 7 : 상태 : 다음 연결이 열려 있습니다. \ r \ n # 0 서버 세션 (t4 r0 i0 / 0 o0 / 0 fd 14/13 cfd -1) \ r \ n # 3 127.0.0.1 포트 57564에서 X11 연결 (t4 r1 i0 / 0 o0 / 0 fd 16/16 CFD -1) \ r \ n # 4 127.0.0.1 포트 57565에서 X11 연결 (t4 r2 i0 / 0 o0 / 0 fd 17 / 17 cfd -1) \ r \ n 127.0.0.1 포트에서 X11 연결 57566 (t4 r3 i0 / 0 o0 / 0 fd 18/18 cfd -1) \ r \ n # 6 127.0.0.1 포트에서 X11 연결 57567 (t4 r4 i0 / 0 o0 / 0 fd 19/19 cfd -1) \ r \ n 127.0.0.1 포트 59007에서 X11 X11 연결

이 보고서에서 연결 # 7에서 사용하는 포트 번호를 제외하고는 상태 보고서 간에는 모두 동일합니다. Linux 클라이언트라고 생각하는 유일한 디스플레이 연결입니다. 밤새 이러한 보고서의 순서에 따라 시간이 지남에 따라 계속 증가합니다.

도움을 주셔서 감사합니다

-마이크


같은 문제가 발생합니다.
초에 이탈

Mac 클라이언트 측 ssh 세션에서 디버그 정보를 얻기 위해 ssh 명령에서 -vvv를 켰습니다. :이있어 codeForwardX11Timeout이 ForwardX11Timeout는 한계가 신뢰할 수없는 연결에서 전달하는 맥의 ssh 클라이언트의 옵션입니다 만료 후 거부 X11 연결을. 잠재적으로 -X 대신 -Y를 사용하면 작동합니다. ForwardX11Timeout은 Lion의 ssh 매뉴얼 페이지에 설명되어 있지 않습니다. 기본값은 20 분입니다. ssh_config에서 더 높게 설정하는 것이 가능하지만> 596 시간으로 설정하면 Lion의 X 서버가 충돌합니다. 밀리 초 단위로 31 비트가 넘칩니다. Arrgh. 이것이 수정되기를 바랍니다.
mklein9

답변:


13

Mac 클라이언트의 / etc / ssh_config를 다음 줄을 포함하도록 변경 한 후 ssh 세션이 시작되었습니다.

ForwardX11Timeout 596 시간

모두 잘 작동하고 하루 종일되었습니다. 이제 그들은 모두 새로운 xterm을 시작하기를 거부했을 것입니다. 그래서 이것이 대답이며 운 좋게도 간단한 해결책이지만 시간 초과는 지금부터 3-1 / 2 주 후에 계속 될 것입니다.


3

man ssh_config

전달 X11Trusted

이 옵션을 "yes"로 설정하면 원격 X11 클라이언트는 원래 X11 디스플레이에 완전히 액세스 할 수 있습니다. 이 옵션을 "no"로 설정하면 원격 X11 클라이언트는 신뢰할 수없는 것으로 간주되며 신뢰할 수있는 X11 클라이언트에 속한 데이터를 훔치거나 변조 할 수 없습니다. 또한 세션에 사용 된 xauth (1) 토큰은 20 분 후에 만료되도록 설정됩니다. 이 시간이 지나면 원격 클라이언트의 액세스가 거부됩니다. 기본값은 "아니오"입니다. 신뢰할 수없는 클라이언트에 적용되는 제한 사항에 대한 자세한 내용은 X11 SECURITY 확장 사양을 참조하십시오.


1
이 구성 옵션이 원래 문제를 해결한다고 생각하는 이유를 확장 한 경우 도움이 될 수 있습니다.
pjmorse

이것은 문제가 발생 하는 이유를 설명 하지만 어떤 추론이 도움이 될 것입니다.
Stefan Lasiewski

1

"0:11에 답변 1 월 7 '12 mklein9 28129"에 추가하려면 "행을 포함하도록 Mac 클라이언트의 / etc / ssh_config를 변경 한 후 ssh 세션이 시작되었습니다.

ForwardX11Timeout 596h

...하지만 타임 아웃은 지금부터 3-1 / 2 주 후에 계속 될 것입니다. "

분명히 0을 사용할 수 있으며 연결이 켜져있는 한 시간 초과를 무한대로 설정합니다.

ForwardX11Timeout 0

...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.