전반적 으로을 추천x11vnc
합니다.
TL; DR
apt-get -y install x11vnc
x11vnc -storepasswd
비밀번호를 입력하면 기본적으로 비밀번호 ~/.vnc/passwd
암호화 형식 으로 저장됩니다 . 키가 알려져 있기 때문에 암호를 해독 할 수 있습니다. .. 파일 시스템 권한으로 보호)
chmod 600 ~/.vnc/passwd
도우미 스크립트를 로컬로 저장하십시오.
mkdir ~/bin/
curl https://gist.githubusercontent.com/trinitronx/76d2bf98489e5e3e84fa/raw/53885d87f91320b574ca4f7d609e4bb268274f68/start_x11vnc.sh > ~/bin/start_x11vnc.sh && chmod +x ~/bin/start_x11vnc.sh
VNC 클라이언트 호스트에서 :
ssh -f -L 5900:127.0.0.1:5900 -p 22 youruser@your-ubuntu-host.example.com '~/bin/start_x11vnc.sh && sleep 10'
또는 VNC 서버 호스트에서 다음을 실행하십시오.
~/bin/start_x11vnc.sh
터미널을 통해 (또는과 데몬으로 시작 -forever
로 있는 init.d 서비스 , 신출내기 서비스 , systemd 단위 그러나, 또는 당신이 원하는)
이제 클라이언트 호스트에서 선택한 VNC 클라이언트를 실행하고을 가리킨 다음 127.0.0.1:5900
위에 저장된 비밀번호로 로그인하십시오.
X11 "매직 쿠키"사용
대부분의 X 디스플레이 관리자 (예 : GDM , XDM , KDM )는 초기 X11 서버를 시작 하고 MIT Magic Cookie를 사용하여 인증합니다 . 디스플레이 관리자에 따라 매직 쿠키는 다양한 위치 중 하나에 있습니다 .
이 스크립트로 마술 쿠키를 찾아 우분투 GDM 로그인 화면 * NOTE1 에서 VNC 세션을 열면 행운을 얻었습니다 .
#!/bin/bash
DEFAULT_DISPLAY=:0
X11VNC_DISPLAY="$DEFAULT_DISPLAY"
if [ -x /usr/bin/x11vnc ]; then
[ "$1" == '-nocache' ] && CACHE_FLAG='-noncache' || CACHE_FLAG='-noncache'
[ "$2" == '-guess' ] && GUESS_FLAG='-auth guess' || GUESS_FLAG=''
[ -f /root/.vnc/passwd ] && PASSWORD="/root/.vnc/passwd"
[ -f $HOME/.vnc/passwd ] && PASSWORD="$HOME/.vnc/passwd"
[ ! -z "$PASSWORD" ] && x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo "\n*********************************************************************"
echo "*** Could not start x11vnc! Trying again with gdm MAGIC_COOKIE! ***"
echo "*********************************************************************\n"
# Old GDM location for Ubuntu <= 17.10
MAGIC_COOKIE_FILE=`sudo find /var/run/gdm/ -iname database | grep for-gdm`
# New GDM location for Ubuntu >= 17.10
[ -z "$MAGIC_COOKIE_FILE" ] && NUM_MAGIC_COOKIE_FILE_SESSIONS=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' 2>/dev/null | wc -l`
if [ -z "$MAGIC_COOKIE_FILE" -a "$NUM_MAGIC_COOKIE_FILE_SESSIONS" -gt 1 ]; then
# Find the current user's session
MAGIC_COOKIE_FILE=`sudo find /run/user/$(id -u) -iwholename '*/gdm/*' -iname '*Xauthority'`
X11VNC_DISPLAY=":1"
else
# Find the GDM user's session (or whichever shows up first in ps list)
# This should pick up the original gdm session which grabs :0
# If you login after gdm login screen, your Xorg server may end up on another display!
# Workaround for now is to restart x11vnc on that display number
[ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' | head -n1`
fi
# Old lightdm location for Ubuntu <= 17.10
[ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /var/lib -name '.Xauthority' -o -wholename '/var/run/lightdm/root/:0' | head -n1`
#sudo bash -c "[ -z \"$MAGIC_COOKIE_FILE\" -a -e /var/run/lightdm/root/:0 ]" && MAGIC_COOKIE_FILE='/var/run/lightdm/root/:0'
[ -n "$MAGIC_COOKIE_FILE" -a -z "$GUESS_FLAG" ] && AUTH_COOKIE_FLAG="-auth $MAGIC_COOKIE_FILE"
[ ! -z "$PASSWORD" ] && sudo x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage ${AUTH_COOKIE_FLAG}
fi
fi
로그인 화면을 start_x11vnc.sh
통해 gdm
로그인 하기 전에도 SSH를 통해 언제든지이 스크립트를 시작할 수 있습니다 . SSH 터널x11vnc
을 통해 연결할 수 있는 서버를 시작합니다 . 에서 호스트 항목을 사용 하거나 추가 하십시오 .ssh -L 5900:127.0.0.1:5900
LocalForward 5900 127.0.0.1:5900
~/.ssh/config
NOTE1 : Ubuntu> = 17.10과 같은 일부 새로운 배포판에서는 GDM 로그인 X 세션 디스플레이가 로그인 한 사용자의 X 세션 디스플레이와 완전히 분리되어 있습니다. 따라서 먼저 GDM X 세션에 연결하고 로그인 한 다음 새로 시작한 X 세션의 연결을 끊었다가 다시 연결해야합니다. 그들이 지금 이런 식으로하는 이유는 미스터리이지만이 스크립트의 구 버전을 깨뜨 렸습니다.