ssh -Y 후 su -하는 방법여전히 X 응용 프로그램을 로컬 컴퓨터로 전달합니다.

ssh -Y 후 su -하는 방법여전히 X 응용 프로그램을 로컬 컴퓨터로 전달합니다.

원격으로 실행되는 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

  1. ssh -Y원격 컴퓨터에 자신처럼 연결하십시오.
  2. 거기에 을 입력하면 xauth listMAGIC-COOKIE 항목 목록이 나타납니다. 귀하의 로그인 세션은 목록 맨 아래에 있을 가능성이 높습니다. (호스트 이름과 UNIX 숫자 코드를 보고 압축을 푼 호스트 이름 및 현재 localhost:## DISPLAY env 변수와 비교하여 이를 확인하십시오.)
  3. 사용자를 전환합니다.
  4. + 위에서 xauth addMAGIC-COOKIE 줄 전체를 입력하세요.
  5. 이제 그래프가 나타나야 합니다. Quick 을 사용하여 테스트하십시오 xlogo.

답변3

나는 Randy의 답변을 좋아하지만 나에게는 그다지 효과가 없습니다.

이것이 내가하려는 일입니다.

  1. ssh -Y as user1
  2. xauth list | grep `uname -n`
  3. 사용자 2로 전환
  4. unset XAUTHORITY
  5. xauth generate :0 .
  6. 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입니다.

관련 정보