Linux VM에서 개발하기 위해 원격 플러그인과 함께 VS Code를 사용하도록 전환하려고 합니다. 그러나 DISPLAY 변수와 관련된 문제로 어려움을 겪고 있습니다. 어쨌든 MobaXterm을 사용하여 서버에 SSH로 연결하는 동안 DISPLAY 변수가 올바르게 설정됩니다. 그러나 VS 코드를 사용하여 동일한 서버에 SSH로 연결하면 전혀 설정되지 않습니다. DISPLAY 변수를 수동으로 설정할 수 있지만 MobaXterm을 사용하여 이 작업을 어떻게 수행합니까? 이 값을 나타내는 설정 대화 상자에 아무 것도 표시되지 않으므로 Visual Studio Code를 통해 SSH 연결 중에 DISPLAY를 자동으로 설정하기 위해 이 프로세스를 복제하는 방법을 모르겠습니다. 여러 가상 머신에 연결할 때 DISPLAY 변수가 다를 수 있습니다. 때로는 14.0이고 때로는 10.0이므로 구성 파일에 하드 코딩하는 것은 좋은 생각이 아닌 것 같습니다. 그럼 어떻게 설정해야 할까요?
내 원격 연결 SSH 구성 파일은 대상에 대해 가짜 이름을 구성했다는 점을 제외하면 다음과 같습니다.
Host server-10
HostName server-10
IdentityFile C:\\Users\\my.user.name\\.ssh\\id_rsa
ForwardX11 yes
ForwardX11Trusted yes
답변1
MobaXterm의 주요 목적은 X11 GUI 응용 프로그램을 활성화하는 것이므로 X11 디스플레이 서버가 포함되어 있습니다. 따라서 SSH 클라이언트 구성 요소는 기본적으로 X11 전달을 요청합니다.
반면 VS Code는 X11 서버를 포함하지 않으며 -X
다음 -Y
을 제외하면 X11 -XY
전달을 요청하지 않습니다.SSH 연결 명령어를 입력하세요.빠르게.
X11이 SSH를 통해 전달되면 다음이 발생합니다.
1.) SSH 클라이언트는 로컬 X11 디스플레이 서버(Windows에서는 별도로 지정하지 않는 한 일반적으로 포트 6000에 대한 로컬 TCP 연결을 통해)에 연결하고 액세스 가능한지 확인합니다.
2.) 원격 SSH 서버와의 연결을 협상할 때 클라이언트는 X11 전달을 요청합니다. 원격 SSH 서버가 요청을 수락하면 포트 6010 또는 그 다음의 첫 번째 사용 가능한 포트에서 로컬 연결을 수신하도록 로컬 X11 프록시를 설정합니다. DISPLAY
원격 측에서 환경 변수를 설정 합니다 . 일반적으로 더미 MIT-MAGIC-COOKIE 세션 키가 있는 파일 localhost:<X11 proxy port number - 6000>
도 제공합니다 .~/.Xauthority
3.) 원격 X11 애플리케이션이 시작되면 DISPLAY
환경 변수와 ~/.Xauthority
파일이 표시되고 지침에 따라 원격 SSH 서버에서 생성된 프록시에 대한 X11 연결을 설정합니다.
4.) 프록시 포트는 X11 연결(일반적으로 동일한 호스트 내에서만)을 허용하고, 세션 키를 확인하고, 암호화된 SSH 터널 내의 X11 트래픽을 로컬 SSH 클라이언트에 전달합니다.
5.) 로컬 SSH 클라이언트는 원격 더미 쿠키(필요한 경우)를 실제 로컬 X11 서버에 필요한 쿠키로 대체하고 로컬 트래픽을 X11 디스플레이 서버로 전달합니다. 모든 답변은 동일한 방식으로 다시 전송됩니다.
원격 X11 포트 번호와 해당 DISPLAY
변수 값은 원격 서버(및 6010+ 범위에 있는 TCP 포트의 다른 사용자)에 있는 다른 기존 SSH 전달 X11 연결 수에 따라 달라집니다. 따라서 DISPLAY 변수를 하드코딩하는 것은 실제로 좋은 생각이 아닙니다.
Windows용 X410 X11 서버에는 VS Code를 사용하여 X11 연결을 설정하기 위한 그림이 포함된 설명서가 있습니다.https://x410.dev/cookbook/enabling-ssh-x11-forwarding-in-visual-studio-code-for-remote-development/
모든 Windows X11 디스플레이 서버를 사용할 수 있지만 원칙은 동일합니다.
로컬 X11 디스플레이 서버가 포트 6000/TCP에서 직접 원격 X11 연결을 허용하는 경우 기술적으로할 수 있다DISPLAY
원격 변수를 수동 으로 설정합니다 <IP or hostname of the local system>:0
. 하지만,너 이러면 안 돼로컬 시스템에 연결할 수 있는 사람을 절대적으로 신뢰하지 않는 한 다음과 같이 설정됩니다.암호화되지 않은X11 연결은 쉽게 도청됩니다.
악의적인 원격 X11 연결은 다음과 같은 역할을 할 수도 있습니다.키로거전체 로컬 디스플레이에 대해, 따라서 자신의 세션에 합법적인 부분이 아닌 응용 프로그램이 X11 디스플레이 서버에 연결되도록 허용해서는 안 됩니다. X11 세션 쿠키 메커니즘은 원격 애플리케이션이 사용자 계정에만 제공되는 세션별 쿠키를 생성할 수 없는 한 X11 연결이 끊어지는 것을 방지하도록 설계되었습니다.
2000년 이후 내가 본 거의 모든 Linux 배포판은 기본적으로 암호화되지 않은 원격 X11 연결을 거부하도록 X11 서버를 구성했지만 Windows X11 서버는 아직 그렇게 하지 않았을 수 있습니다.