Nhìn chung, tôi khuyên bạn nênx11vnc
.
TL; DR
apt-get -y install x11vnc
x11vnc -storepasswd
Nhập mật khẩu của bạn, nó được lưu theo mặc định ở ~/.vnc/passwd
dạng được mã hóa BECNG CÁCH. Nó có thể được giải mã vì khóa được biết đến. .. bảo vệ nó với quyền hệ thống tập tin)
chmod 600 ~/.vnc/passwd
Lưu tập lệnh trợ giúp của tôi cục bộ:
mkdir ~/bin/
curl https://gist.githubusercontent.com/trinitronx/76d2bf98489e5e3e84fa/raw/53885d87f91320b574ca4f7d609e4bb268274f68/start_x11vnc.sh > ~/bin/start_x11vnc.sh && chmod +x ~/bin/start_x11vnc.sh
Từ máy chủ VNC Client của bạn:
ssh -f -L 5900:127.0.0.1:5900 -p 22 youruser@your-ubuntu-host.example.com '~/bin/start_x11vnc.sh && sleep 10'
Hoặc, từ máy chủ VNC Server của bạn, hãy chạy:
~/bin/start_x11vnc.sh
thông qua một thiết bị đầu cuối (hoặc bắt đầu nó như là một daemon với -forever
như một dịch vụ init.d , dịch vụ mới nổi , đơn vị systemd , hoặc tuy nhiên bạn muốn)
Bây giờ hãy chạy Ứng dụng khách VNC của bạn từ Máy chủ khách hàng của bạn, chỉ vào : 127.0.0.1:5900
, đăng nhập bằng mật khẩu được lưu ở trên.
Sử dụng "Cookie ma thuật" X11
Hầu hết các trình quản lý hiển thị X (như GDM , XDM , KDM ) khởi động máy chủ X11 ban đầu và xác thực với nó bằng MIT Magic Cookie . Tùy thuộc vào trình quản lý hiển thị của bạn, cookie ma thuật sẽ được tìm thấy ở một trong những địa điểm khác nhau .
Tôi đã rất may mắn khi mở một phiên VNC trên màn hình đăng nhập Ubuntu GDM * NOTE1 bằng cách tìm cookie ma thuật với tập lệnh này :
#!/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
Tôi có thể bắt đầu tập lệnh này (tôi đã gọi nó start_x11vnc.sh
) bất cứ lúc nào thông qua SSH ... ngay cả trước khi đăng nhập qua gdm
màn hình đăng nhập. Nó khởi chạy một x11vnc
máy chủ mà sau đó tôi có thể kết nối với đường hầm SSH . (Sử dụng ssh -L 5900:127.0.0.1:5900
hoặc thêm LocalForward 5900 127.0.0.1:5900
vào mục nhập của máy chủ lưu trữ của bạn ~/.ssh/config
).
LƯU Ý 1 : Trong một số bản phát hành phân phối mới như Ubuntu> = 17.10, hiển thị phiên X đăng nhập GDM hoàn toàn tách biệt với hiển thị phiên X của người dùng đã đăng nhập. Do đó, trước tiên cần kết nối với phiên GDM X, đăng nhập ... và cuối cùng ngắt kết nối và kết nối lại với phiên X mới bắt đầu. Tại sao bây giờ họ làm theo cách này là một bí ẩn, nhưng nó đã phá vỡ phiên bản cũ của kịch bản này.