总结

总结

我想通过 VNC 远程访问 Ubuntu 机器。但只有用户登录后我才能访问 Ubuntu 机器。我想从登录屏幕本身通过 VNC 访问 Ubuntu 机器。我们可以从登录屏幕访问所有 Windows 机器。但是我们无法从登录屏幕访问 Ubuntu 机器。有办法,但我不知道细节。有人能解决这个问题吗?

答案1

最好的选择是安装偏磷酸钠 安装 xrdp。安装后,您可以使用 RDP 客户端连接到机器 - 然后系统将提示您输入凭据,就像在登录屏幕上一样。

答案2

全面的,我建议x11vnc

总结

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 [email protected] '~/bin/start_x11vnc.sh && sleep 10'

或者,从您的 VNC 服务器主机运行:

~/bin/start_x11vnc.sh

通过终端(或者-forever使用init.d服务新贵服务系统单元,或者按照你的意愿)

现在从您的客户端主机运行您选择的 VNC 客户端,将其指向:127.0.0.1:5900,使用上面保存的密码登录。

使用 X11“Magic Cookie”

最多X 显示管理器(喜欢妊娠期糖尿病西迪姆凯迪拉克)启动初始 X11 服务器并向其进行身份验证麻省理工学院魔法饼干。根据您的显示管理器,魔术 cookie 将是在不同的地点之一发现

我很幸运地在 Ubuntu GDM 登录屏幕上打开了一个 VNC 会话*注 1,通过找到 magic cookie这个脚本

#!/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我可以随时通过 SSH启动此脚本(我称之为)...甚至在通过gdm登录屏幕登录之前。它会启动一个x11vnc服务器,然后我可以通过SSH 隧道. (使用ssh -L 5900:127.0.0.1:5900或添加LocalForward 5900 127.0.0.1:5900到 中的主机条目~/.ssh/config)。

注释1:在某些新发行版(例如 Ubuntu >= 17.10)中,GDM 登录 X 会话显示与已登录用户的 X 会话显示完全分开。因此,必须先连接到 GDM X 会话,然后登录……最后断开连接并重新连接到新启动的 X 会话。他们现在为什么这样做是个谜,但它破坏了这个脚本的旧版本。

答案3

要通过 VNC ssh 远程连接启用 GDM 登录,请尝试使用 X11vnc。另请参阅这个答案

答案4

回复:尝试使用 X11vnc

x11vnc 自 2011 年 9 月以来就没有更新过!!!!存在已知错误,每当弹出对话框(例如单击任何窗口上的“文件”菜单)断开会话时,都会触发 x11vnc 的堆栈破坏终止。

Raspberry pi 可以连接到 :0 上的桌面管理器会话,为什么这对 Ubuntu 来说是个问题?!?!为什么在任何现代操作系统上都需要依赖一个 7 年前的孤立程序来做到这一点?

相关内容