원격으로 실행되는 Linux 애플리케이션을 "가져오는"(즉, 로컬로 그리기) 것은 매우 쉽습니다. ssh -Y
원격 시스템으로 이동하여 애플리케이션을 실행하면 해당 애플리케이션이 로컬 데스크톱에 확실히 나타납니다.
그러나 su
원격 컴퓨터의 다른 사용자에게 SSH를 통해 연결하면 X 응용 프로그램을 로컬 컴퓨터로 전달할 수 없습니다. 그것은 말한다 wrong authentication
.
이 사건을 어떻게 처리해야 할지 모르겠습니다. 이는 여전히 echo $DISPLAY
사실이지만( ssh -Y
초기 로그인에 의해 설정됨) 세션 쿠키는 ssh에 로그인하는 초기 사용자에 대해서만 설정될 수 있습니다.
이 문제를 어떻게 극복하고 다른 사용자가 실행 중인 다른 X 응용 프로그램에 전달할 수 있습니까?
내가 직접 ssh를 사용하지 않는 이유는 해당 사용자에게 ssh를 보내고 싶지 않기 때문입니다(해당 서버에 ssh를 시도하는 봇의 쉬운 대상인 "virtualbox" 사용자입니다)...
답변1
X11 전달이 활성화된 삭제된 시스템에 ssh를 연결하면 서버의 ssh가 .Xauthority
사용자의 홈 디렉터리에 파일을 생성합니다. ssh는 TCP 소켓에서 X11을 수신하므로 누구나 연결할 수 있습니다. 누구나 연결할 수 있으므로 다른 사람이 모니터를 사용하지 못하도록 방지할 방법이 필요합니다. 이 파일을 사용하여 수행 됩니다 .Xauthority
. 이 파일에는 클라이언트의 연결이 허용되는지 확인하기 위해 X11 서버에 제공되는 "쿠키"가 포함되어 있습니다.
모든 세부 사항을 건너뛰고 .Xauthority
파일을 대상 사용자의 홈 디렉터리에 복사하고 소유권을 부여하면 연결할 수 있습니다.
답변2
ssh -Y
원격 컴퓨터에 자신처럼 연결하십시오.- 거기에 을 입력하면
xauth list
MAGIC-COOKIE 항목 목록이 나타납니다. 귀하의 로그인 세션은 목록 맨 아래에 있을 가능성이 높습니다. (호스트 이름과 UNIX 숫자 코드를 보고 압축을 푼 호스트 이름 및 현재 localhost:## DISPLAY env 변수와 비교하여 이를 확인하십시오.) - 사용자를 전환합니다.
- + 위에서
xauth add
MAGIC-COOKIE 줄 전체를 입력하세요. - 이제 그래프가 나타나야 합니다. Quick 을 사용하여 테스트하십시오
xlogo
.
답변3
나는 Randy의 답변을 좋아하지만 나에게는 그다지 효과가 없습니다.
이것이 내가하려는 일입니다.
ssh -Y as user1
xauth list | grep `uname -n`
- 사용자 2로 전환
unset XAUTHORITY
xauth generate :0 .
xauth add :0 . <KEY-FROM-STEP-2>
5단계와 6단계에서 두 기간을 기록해 두세요.
Randy의 답변을 따르면 user2의 XAUTHORITY
변수는 여전히 user1의 파일을 가리킵니다 .Xauthority
. +key 구문이 작동하지 않습니다.
답변4
이것이 매우 도움이 되었지만 다음과 같이 $DISPLAY를 내보내야 했습니다.
첫 번째 사용자로
# $xauth list $DISPLAY
<<<<<<<<FULL COOKIE TEXT>>>>>>>>>>>
# echo $DISPLAY
<localhost:11.0>
두 번째 사용자로
# xauth add <<<<<<<<FULL COOKIE TEXT>>>>>>>>>>>
# export DISPLAY=<localhost:11.0>
참고: 내 시스템은 Red Hat 7입니다.