BASH를 사용하여 SSH에서 X11 전달이 활성화되었는지 확인

BASH를 사용하여 SSH에서 X11 전달이 활성화되었는지 확인

SSH를 통해 네트워크에 로그인한 후 네트워크에서 사용하는 기본 셸은 BASH입니다.
그래픽을 사용하는 응용 프로그램은 X11 전달이 활성화된 경우에만 실행할 수 있으며, 일반적으로 -X로그인 시 이 옵션을 통해 수행합니다.

ssh -X [email protected]

활성화되면 DISPLAY 환경 변수가 존재하고 와 같이 설정되지만 DISPLAY=localhost:11.0사용자가 동일한 이름의 환경 변수를 내보내 활성화된 것처럼 보이게 만드는 것을 막을 수 있는 방법은 없습니다.

X11 전달이 활성화되어 있는지 bash 쉘이나 bash 스크립트에서 확인할 수 있는 방법이 있습니까?

답변1

첫 번째,? 사용자가 DISPLAY를 위조하려는 이유는 무엇입니까? 그럼에도 불구하고 두 가지 해결 방법이 있습니다.

  1. readonly DISPLAYbashrc/config 파일에 있습니다. 로그인 시 올바르게 실행되면 사용자는 나중에 DISPLAY를 설정할 수 없습니다.
  2. xset q. 일부 X11 정보를 쿼리합니다. X11 세션이 없으면 오류가 반환됩니다.

답변2

테스트하는 것이 DISPLAY옳은 일입니다. 더 잘할 수는 없으며, 더 똑똑해지려는 시도는 유익보다는 해를 끼칠 가능성이 더 큽니다.

예, 물론 사용자가 거짓말을 해서 DISPLAY잘못된 값을 설정할 수 있습니다. 그러나 사용자는 디스플레이를 끌 수도 있습니다. 귀하가 표시하는 내용을 사용자가 볼 수 있다고 보장할 수는 없습니다. 사용자가 거짓말을 했다면 어차피 알 수 없을 것입니다. DISPLAY정보가 다른 위치(일반적으로 동일한 사용자의 다른 세션)에 표시되도록 하는 값을 설정할 수 있습니다 . 대신 유효한 값이 존재하더라도 DISPLAY설정이 해제되거나 유효하지 않은 값으로 설정될 수 있지만 해당 값이 무엇인지 알 수 있는 방법은 없습니다.

물론 DISPLAY설정은 가능하지만 X 서버에 접속할 수는 없습니다. 이 경우 명확한 오류 메시지를 인쇄하는 것이 도움이 됩니다. 설정되었으나 사용할 수 없는 경우 DISPLAY구성에 문제가 있는 것이므로 이 정보를 사용자에게 전달해야 합니다.

답변3

내가 이해한 바에 따르면 DISPLAY 변수를 테스트하여 알 수는 없지만 SSH 세션을 설정할 때 SSH_CONNECTION 환경 변수가 있습니다. X11-Forarding은 xhost를 사용하지 않지만 SSH_CONNECTION 변수가 존재하고 오류 없이 xhost를 사용할 수 있다면 분명히 X 인식 연결이 있는 것이므로 X11-Forwarding입니다.

관련 정보