SSH를 사용하여 로그인할 수 있는 원격 서버가 있습니다. 하지만 내 사용자에게는 홈 디렉터리가 없습니다.
ssh -X
서버에 연결 하려고 하면 ssh가 쿠키를 서버에 넣으려고 시도 ~/.Xauthority
하지만 분명히 실패하므로 X 출력이 불가능합니다.
제가 아는 한, 쿠키를 저장하기 위해 다른 파일을 지정할 수 있는 방법은 없습니다.
그래서 임시 집에서 수동으로 설정해 보았습니다.
mkdir -p /tmp/myhome
cd /tmp/myhome
export HOME=$PWD
xauth add $DISPLAY . $COOKIE
xlogo # test setup
이론적으로 ssh는 터널을 올바르게 설정하고 $DISPLAY를 설정해야 합니다. 누락된 유일한 것은 $COOKIE의 올바른 값입니다.
다른 서버에 표시된 값 xauth list
(비슷함 ffb3c8b945442b70146f7158861f1a54
)이 이 서버에서는 유효하지 않은 것 같습니다.
질문:
- 한 서버에서 작동하는 쿠키가 다른 서버에서는 작동하지 않는 이유는 무엇입니까?
- 제 경우에는 유효한 쿠키를 어떻게 얻을 수 있나요?
- 이 경우 xforwarding을 설정하는 더 쉬운 방법이 있습니까? (올바른 홈 디렉토리를 얻거나 암호화되지 않은 연결을 사용하는 것 제외
xhost
)
답변1
OpenSSH는 프로토콜 측에서 X 쿠키를 설정하는 또 다른 방법을 제공합니다.sshrc
문서. 이 파일은 ~/.ssh/rc
또는 /etc/ssh/sshrc
( /etc/sshrc
또는 서버 구성에 따라 다른 곳에) 있을 수 있습니다 . 설명서에서는 쿠키를 수동으로 설정하기 위한 이 파일의 코드 조각을 제공합니다. 서버가 /bin/sh
POSIX 이전 버전이 아닌 이상 이 코드를 다음과 같이 단순화할 수 있습니다.
if read proto cookie && [ -n "$DISPLAY" ]; then
echo "add unix:${DISPLAY#localhost:} $proto $cookie" | xauth -q -
fi
매뉴얼에서는 홈 디렉토리를 설정하는 일부 코드 뒤에 이 코드를 넣을 것을 권장합니다. 귀하의 경우에는 HOME
환경 변수를 설정해야 하며 아마도 먼저 임시 디렉토리를 생성해야 할 것입니다.
코드는 비슷하지만 localhost:
디스플레이 시작 부분에 남아 있으며 서버가 TCP 연결을 수신하지 않는 경우 작동하지 않습니다. 양식 표시 localhost:10
는 동일하지 않지만 :10
둘 다 작동하는 경우 비슷한 효과가 있습니다. 호스트 이름이 있는 양식은 TCP를 통해 연결되는 반면, 호스트 이름이 없는 양식은 모두 사용 가능한 Unix 소켓을 사용합니다(TCP가 최적화도 가능하지만 연결이 SSH를 통해 TCP를 통해 릴레이될 때 이러한 최적화가 작동할지는 의문입니다.
다른 사용자가 귀하가 생성한 프로세스를 스누핑하고 있으므로 잠재적으로 명령줄을 캡처하는 echo add … | xauth -
대신 선호합니다 . 내장 셸이므로 양식 복구 쿠키를 사용할 수 없습니다 .xauth add …
xauth
echo
echo add …