SSH를 통해 로그인할 때 내 계정의 XDG 변수가 정의되지 않은 이유는 무엇입니까?

SSH를 통해 로그인할 때 내 계정의 XDG 변수가 정의되지 않은 이유는 무엇입니까?

데스크탑에 로그인한 후:

$ env | grep XDG_
XDG_CONFIG_DIRS=/etc/xdg
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session4
XDG_MENU_PREFIX=xfce-
XDG_SEAT=seat0
XDG_SESSION_DESKTOP=xfce
XDG_SESSION_TYPE=x11
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/mattd
XDG_CURRENT_DESKTOP=XFCE
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_VTNR=1
XDG_SESSION_ID=12
XDG_RUNTIME_DIR=/run/user/1000
XDG_DATA_DIRS=/usr/local/share:/usr/share

SSH를 통해 로그인하는 경우:

$ env | grep -i xdg
XDG_SESSION_TYPE=tty
XDG_SESSION_CLASS=user
XDG_SESSION_ID=16
XDG_RUNTIME_DIR=/run/user/1000

SSH를 통해 로그인하면 환경이 다른 이유는 무엇입니까?

저는 Fedora 30을 사용하고 있습니다.

답변1

데스크탑에 로그인하면 데스크탑 환경에서 대부분의 XDG 변수가 설정됩니다.

로그인할 때통과하다SSH, 표시되는 유일한 변수는 다음에서 제공한 변수입니다.pam_systemd: XDG_SESSION_ID,,,, ; XDG_RUNTIME_DIR데스크톱 환경이 없기 때문에 SSH 접속을 위한 좌석 정보는 얻지 못하고, 좌석 정보는 설정되지 않습니다.XDG_SESSION_TYPEXDG_SESSION_CLASSXDG_SESSION_DESKTOP

답변2

man ssh원하는 대로 읽 -X거나 -Y옵션을 선택하세요.

답변3

man ssh_config을 읽은 후 내보낸 환경 변수가 다음 지침에 따라 제어 된다는 man sshd_config것을 발견했습니다 . sshSendEnv/etc/ssh/ssh_config

SendEnv
         Specifies what variables from the local environ(7) should be sent to the server.
         The server must also support it, and the server must be configured to accept these
         environment variables.  Note that the TERM environment variable is always sent
         whenever a pseudo-terminal is requested as it is required by the protocol.  Refer to
         AcceptEnv in sshd_config(5) for how to configure the server.  Variables are
         specified by name, which may contain wildcard characters.  Multiple environment
         variables may be separated by whitespace or spread across multiple SendEnv
         directives.  The default is not to send any environment variables.

그리고 서버에서 AcceptEnv(서버의) 지시문은 다음과 같습니다 /etc/ssh/sshd_config.

 AcceptEnv
         Specifies what environment variables sent by the client will be copied into the
         session's environ(7).  See SendEnv in ssh_config(5) for how to configure the client.
         The TERM environment variable is always sent whenever the client requests a pseudo-
         terminal as it is required by the protocol.  Variables are specified by name, which
         may contain the wildcard characters ‘*’ and ‘?’.  Multiple environment variables may
         be separated by whitespace or spread across multiple AcceptEnv directives.  Be
         warned that some environment variables could be used to bypass restricted user
         environments.  For this reason, care should be taken in the use of this directive.
         The default is not to accept any environment variables.

하지만변수 XDG_는 데스크톱 세션을 나타냅니다. 단순히 다른 시스템에 있는 그대로 복사하는 것은 의미가 없습니다.

이것은 "XY" 문제인 것 같습니다. 대화 XDG_의 서버 측 변수 에 관심을 두는 이유는 무엇입니까 ssh? -X그리고 -Y로컬 X 서버를 설정하고 $DISPLAY이를 설정해 보세요.

관련 정보