WSL에서 Ubuntu를 사용하여 xauth 파일을 생성할 수 없습니다.

WSL에서 Ubuntu를 사용하여 xauth 파일을 생성할 수 없습니다.

빠른 설명: WSL Ubuntu 배포판을 호스팅하는 Windows 시스템에서 X 서버를 실행하고 있습니다. 로컬 및 원격으로 GUI 프로그램을 실행할 수 있습니다. 예를 들어 gvim로컬 WSL에서 시작할 수 있고 gvimSSH 세션일 때도 시작할 수 있습니다.


WSL은 원격 서버와 통신하는 데 적합하며 X 전달이 작동하도록 했습니다. 그러나 나는 계속 다음을 얻습니다.추가 텍스트내가 ssh -X user@machine_ip명령을 실행할 때.이것이 내 모든 GUI 세션이 안전하지 않다는 뜻인지 궁금합니다.잠재적인 위협이 별로 나타나지 않는다면 나는 그러한 메시지를 받아들일 수 있습니다.

Warning: No xauth data; using fake authentication data for X11 forwarding.

다음 설치 프로그램 및 구성 단계를 실행했지만 마지막 단계에서 실패했습니다.

mv ~/.Xauthority ~/old.Xauthority 
sudo apt install ssh xauth xorg -y
touch ~/.Xauthority
xauth generate $DISPLAY .

다음과 같은 오류 메시지가 나타납니다.

xauth: (argv):1:  couldn't query Security extension on display "localhost:0.0"  

Warning: No xauth data;저는 세 대의 Windows 컴퓨터(노트북 두 대와 데스크톱 한 대)에서 설명된 문제를 재현해 왔지만 어떻게든 네 번째 데스크톱 컴퓨터에서 " " 메시지를 제거했습니다 . 그런 다음 네 번째 데스크톱 컴퓨터에서 나머지 세 컴퓨터로 다음 내용을 복사했지만 아무것도 개선되지 않았습니다.

  1. 파일 내용 ~/.Xauthority,
  2. 에 다음을 추가했습니다 /etc/ssh/config.
    ForwardAgent no
    ForwardX11 no
    ForwardX11Trusted yes
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    XauthLocation /usr/bin/xauth
  1. 에 다음을 추가했습니다 ~/.ssh/config.
Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
    Protocol 2
    GSSAPIDelegateCredentials no
    XAuthLocation /usr/bin/xauth

xauth마지막으로 WSL(Ubuntu 18.04 LTS)을 실행하는 모든 버그가 있는 Windows 컴퓨터에서 프로그램 과 다음과 같은 "대화"가 계속 발생합니다 .

User @ machine ➜  ~  xauth                                                   
Using authority file /home/llinfeng/.Xauthority 
xauth> generate $DISPLAY                                                                                  
xauth: (stdin):2:  unable to open display "$DISPLAY".                                                     
xauth> generate $DISPLAY .                                                                            
xauth: (stdin):3:  unable to open display "$DISPLAY".                                                     
xauth> add $DISPLAY .                                                                                     
xauth: (stdin):4:  bad "add" command line                                                                 
xauth>    

에 대한 매뉴얼을 확인한 결과 xauth, add어떻게든 유효한 명령인 것 같습니다.


세 가지 WSL 배포판을 시도했는데 모두 동일한 " No xauth data" 오류 메시지가 나타납니다. Microsoft Store의 세 가지 배포판에는 Ubuntu, Ubuntu 18.04 LTS 및 Pengwin(Debian)이 있습니다.


xauth적절한 "xauth 데이터"를 생성하는 명령을 얻는 방법을 알려주십시오 .

답변1

게시물과 귀하의 답변에 따르면 이 오류 메시지를 제외한 모든 것이 올바르게 작동하고 있습니다.

"가짜 인증 데이터"가 원격 세션으로 전송된다는 메시지가 표시됩니다. 해당 데이터를 사용하여 원격 공격자에게 어떻게 도움이 될 수 있는지 알 수 없으므로 "xauth 데이터 없음"이라는 경고를 단순히 무시하는 것이 왜 안전하지 않은지 알 수 없습니다.

WSL은 Linux의 전체 구현이 아닙니다. 많은 시스템 호출과 라이브러리가 구현되었지만 대부분은 구현되지 않았습니다.

내 개인적인 의견: 잘못 구현되었거나 구현되지 않은 기능에서 발생하는 오류 메시지를 무시하고 안전하게 받아들일 수 있다고 말하고 싶습니다.

답변2

Windows에는 X 서버가 없기 때문에 Xming과 같은 X 서버를 설치해야 작동합니다.

ssh는 원격 시스템의 X 서버 요청을 사용자에게 전달하고 있으며, 해당 요청이 없으면 오류가 발생합니다.

Xming을 설치한 후 ssh가 아닌 WSL 셸에 다음 명령을 입력하세요.

export DISPLAY=:0

이 명령은 새 터미널을 열 때마다 실행되어야 합니다.

다음에 추가할 수도 있습니다.~/.bashrc

작동하지 않으면 xterm도 설치하고 모든 X 라이브러리를 설치합니다. 우분투에서

sudo apt update;sudo apt install xterm

그런 다음 평소처럼 xauth를 사용할 수 있습니다

다음을 사용하여 비활성화할 수도 있습니다.xauth +

-YX 전달을 사용하려면 ssh 플래그도 사용해야 합니다 .

ssh -Y user@host

xming을 설치했는데 작동하지 않으면 DISPLAY 변수가 설정되어 있는지 확인하세요. 이 변수는 WSL에서만 설정해야 하며 xauth를 사용할 수 있습니다.

export DISPLAY=:0

답변3

귀하의 상황과 관련이 있을 수도 있고 아닐 수도 있지만 다음과 같은 이유로 xauth 명령에 문제가 있었습니다.

  • drvfs 파일 시스템을 마운트하고 이를 집으로 사용하고 있었습니다.
  • drvfs는 링크(하드 링크 또는 심볼릭 링크)를 지원하지 않습니다.
  • xauth가 링크를 사용하려고 합니다.

가치 있는 일이기 때문에 XAUTHORITY 환경 변수를 wsl ext4 파일 시스템의 일부 경로로 설정하여 이 문제를 해결했습니다.

Ditto .ICEauthority 및 ICEAUTHORITY env var. (iceauth 매뉴얼 페이지에 ICEAUTHORITY env var가 언급되어 있지 않더라도 작동하는 것 같습니다.)

관련 정보