Linux 호스트에 SSH 연결을 입력하면 XAUTHORITY 환경 변수가 설정되지 않습니다. 을 실행하면 명령을 즉시 추가 sudo -b
하지 않으면 연결이 끊어집니다 nohup
. 이 경우 작업이 실패하고 보고됩니다.X11 connection rejected because of wrong authentication.
해결 방법으로 값을 수동으로 $HOME/.Xauthority
.
이 변수는 일반적으로 자동으로 설정됩니다. 변수가 원하는 방식(적절한 시간에 올바른 프로세스를 통해)으로 설정되도록 하려면 어떻게 해야 합니까?
답변1
Xauthority 파일이 있는 경우 환경 변수가 기본 경로이므로 $HOME/.Xauthority
필요하지 않습니다 . X11 라이브러리가 자동으로 이를 확인해야 합니다.XAUTHORITY
$HOME/.Xauthority
그런 다음 sudo
X11을 사용하여 루트로 전환하면 X11 세션을 유지하여 액세스가 더 어려워집니다 . 더 이상 환경 변수를 유지 하고 루트가 어디에서나 Xauthority를 읽을 수 있도록 하는 sudo
문제가 아니기 때문입니다 . 어느 시점에서 XAUTHORITY 값을 다음으로 설정해야 합니다. Xauthority 파일의 실제 위치를 식별합니다. 필요한 프로세스가 시작되기 전에 설정하기만 하면 설정 방법은 중요하지 않습니다.DISPLAY
XAUTHORITY
변수가 유지되도록 구성된 경우 다음과 같이 sudo
이전의 원래 사용자 계정과 같이 로그인 스크립트에서 명시적으로 설정하여 XAUTHORITY
이 문제를 해결할 수 있습니다(설정된 경우) .XAUTHORITY
sudo
DISPLAY
if [ "$DISPLAY" != "" ] && [ "$XAUTHORITY" = "" ]; then
export XAUTHORITY=$HOME/.Xauthority
fi
sudo
또는 유지되지 않거나 XAUTHORITY
구성이 유지되는 것을 원하지 않는 경우 sudo
다음 코드 조각을 내부에 넣을 수 있습니다 /etc/bash.bashrc
( ~/.bashrc
또는 명령으로 실행되는 셸에서 실행되는 스크립트 sudo
).
if [ "$SUDO_USER" != "" ] && [ "$DISPLAY" != "" ]; then
export XAUTHORITY=$(getent passwd "${SUDO_USER}" | cut -d : -f 6)/.Xauthority
fi