빠른 설명: WSL Ubuntu 배포판을 호스팅하는 Windows 시스템에서 X 서버를 실행하고 있습니다. 로컬 및 원격으로 GUI 프로그램을 실행할 수 있습니다. 예를 들어 gvim
로컬 WSL에서 시작할 수 있고 gvim
SSH 세션일 때도 시작할 수 있습니다.
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 컴퓨터(노트북 두 대와 데스크톱 한 대)에서 설명된 문제를 재현해 왔지만 어떻게든 네 번째 데스크톱 컴퓨터에서 " " 메시지를 제거했습니다 . 그런 다음 네 번째 데스크톱 컴퓨터에서 나머지 세 컴퓨터로 다음 내용을 복사했지만 아무것도 개선되지 않았습니다.
- 파일 내용
~/.Xauthority
, - 에 다음을 추가했습니다
/etc/ssh/config
.
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
XauthLocation /usr/bin/xauth
- 에 다음을 추가했습니다
~/.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 +
-Y
X 전달을 사용하려면 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가 언급되어 있지 않더라도 작동하는 것 같습니다.)