Xforwarding은 사용자 전환을 허용하지 않습니다.

Xforwarding은 사용자 전환을 허용하지 않습니다.

원격 컴퓨터에 ssh로 접속했는데 xforwarding이 잘 작동합니다... 하지만 "sudo su -" 또는 "sudo su user2"를 실행하자마자 더 이상 Xforwards에서 오류가 발생하지 않습니다.

X11 connection rejected because of wrong authentication.
xterm Xt error: Can't open display: localhost:10.0

어떤 아이디어가 있나요?

감사해요

답변1

  1. 클라이언트에서 X-11 전달 활성화
  2. 일반 사용자로 로그인
  3. echo $DISPLAY관련 디스플레이를 얻으려면
  4. xauth list, #3에서 찾은 것과 일치하는 디스플레이 번호를 찾아 복사하세요.
  5. 루트로 Sudoxauth add <paste in what you copied from #4>
  6. 이제 루트로 명령을 실행할 수 있으며 X11 전달 연결을 설정할 수 있습니다.

답변2

그 전에 sudo다음을 수행하십시오.

$ xauth extract /tmp/xauthstuff $DISPLAY

그런 다음 sudo다음을 수행하십시오.

# xauth merge /tmp/xauthstuff

이것이 당신에게 효과가 있습니까?

PS rm /tmp/xauthstuff나중에 기억하세요

답변3

위의 작업을 수행하기 위해 루트 계정에 액세스할 수 없으므로 여기에 제가 사용한 해결 방법이 있습니다.

먼저 평소처럼 계정에 SSH를 통해 접속하고 모든 것이 작동하는지 테스트하세요.

ssh -Y <you>@<your_server>

저는 보통 연결이 되었는지 확인하기 위해 XTerm을 실행합니다. 모두 양호하다면 홈 디렉토리에 있는 .XAuthority 파일을 복사하여 <you>공용 디렉토리에 넣으십시오.

cp ~/.Xauthority /tmp/tempXAuth

sudo 계정이 이후 단계에서 사용할 수 있도록 공용 디렉터리의 해당 파일에 chmod 777을 설정했는지 확인하세요.

chmod 777 /tmp/tempXAuth

이제 작업을 수행해야 하는 사용자에게 sudo를 실행하세요.

sudo su - <other_user>

일단 <other_user>기존 .Xauthority를 ​​백업한 다음 "양호한" 파일을 복사하세요.

cp ~/.Xauthority ~/.Xauthority.bak
cp /tmp/tempXAuth ~/.Xauthority

X 프로그램을 실행하고 현재 XServer 세션으로 인증할 수 있어야 합니다.

답변4

일반적으로 로그인하는 사용자로 다음을 입력합니다.

cd

sudo cp .Xauthority /root/

그런 다음 다음을 사용하여 루트로 전환할 수 있습니다.

sudo su

관련 정보