AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 35396
Accepted
karthick87
karthick87
Asked: 2011-04-16 19:52:00 +0800 CST2011-04-16 19:52:00 +0800 CST 2011-04-16 19:52:00 +0800 CST

如何从登录屏幕通过 VNC 访问 ubuntu 机器?

  • 772

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

remote-desktop
  • 5 5 个回答
  • 37398 Views

5 个回答

  • Voted
  1. Best Answer
    Nathan Osman
    2011-04-16T23:04:56+08:002011-04-16T23:04:56+08:00

    你最好的选择是安装xrdp 安装 xrdp。安装后,您可以使用 RDP 客户端连接到计算机 - 然后会提示您输入凭据,就像在登录屏幕上一样。

    • 10
  2. TrinitronX
    2015-03-04T22:52:31+08:002015-03-04T22:52:31+08:00

    总的来说,我会推荐x11vnc。

    TL;博士

    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 服务、新贵服务、systemd 单元或您希望的方式启动)

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

    使用 X11“魔法饼干”

    大多数X 显示管理器(如GDM、XDM、KDM)启动初始 X11 服务器并使用MIT Magic Cookie对其进行身份验证。根据您的显示管理器,魔术 cookie 将位于不同位置之一。

    我很幸运地在 Ubuntu GDM 登录屏幕*NOTE1上打开了一个 VNC 会话,方法是使用以下脚本找到魔法 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 会话。为什么他们现在这样做是一个谜,但它破坏了这个脚本的旧版本。

    • 7
  3. Takkat
    2011-04-17T00:47:48+08:002011-04-17T00:47:48+08:00

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

    • 2
  4. Didier A.
    2014-09-26T10:37:09+08:002014-09-26T10:37:09+08:00

    如果您不想使用 RDP,以下是使用 VNC 的方法:

    1. 安装 X11VNC 服务器:(sudo apt-get install x11vnc或通过 Ubuntu 软件中心 -> X11VNC 服务器)
    2. 设置密码:

      sudo mkdir /etc/x11vnc
      sudo x11vnc -storepasswd /etc/x11vnc/passwd
      

      选择y保存密码。

    3. /etc/init在调用中创建一个空文件x11vnc.conf:

      sudo -H gedit /etc/init/x11vnc.conf
      
    4. 将其粘贴到文件中:

      start on login-session-start
      
      exec x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -bg -o /var/log/x11vnc.log
      
    5. 保存并关闭

    6. 重启 Ubuntu

    而已!您现在应该能够在登录之前连接任何 VNC 客户端。

    • 0
  5. Scott
    2018-10-31T13:44:10+08:002018-10-31T13:44:10+08:00

    回复:尝试使用 X11vnc

    x11vnc 自 2011 年 9 月以来一直没有更新!!!!有已知的错误,我被一个触发 x11vnc 的堆栈粉碎终止的错误弹出,任何时候弹出对话框(例如单击任何窗口上的“文件”菜单)断开会话。

    Raspberry pi 可以在 :0 上连接到桌面管理器会话,为什么这对于 Ubuntu 来说是这样的问题?!​​?!为什么在任何现代操作系统上都必须依赖一个孤立的、7 岁的程序来执行此操作?

    • -1

相关问题

  • 如何打开远程会话?

  • 是否可以使用从 Windows 7 到 Ubuntu 的远程桌面?

  • 是否有相当于 Windows 远程协助/iChat 屏幕共享的功能?[复制]

  • 从 Ubuntu 连接到 Windows 的最佳远程桌面工具是什么?[关闭]

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve