วิธีการเข้าถึงเครื่อง Ubuntu ผ่าน VNC จากหน้าจอเข้าสู่ระบบ


17

ฉันต้องการเข้าถึงเครื่อง Ubuntu จากระยะไกลผ่าน VNC แต่ฉันสามารถเข้าถึงเครื่อง Ubuntu ได้เฉพาะเมื่อผู้ใช้ลงชื่อเข้าใช้ฉันต้องการเข้าถึงเครื่อง Ubuntu ผ่าน VNC จากหน้าจอเข้าสู่ระบบเอง เราสามารถเข้าถึงเครื่อง windows ทั้งหมดได้จากหน้าจอเข้าสู่ระบบ อย่างไรก็ตามเราไม่สามารถเข้าถึงเครื่อง Ubuntu ได้จากหน้าจอเข้าสู่ระบบ มีบางวิธี แต่ฉันไม่ทราบรายละเอียด บางคนสามารถให้คำตอบกับปัญหานี้ได้หรือไม่?


หากเครื่องอื่นอยู่ใน LAN เดียวกันมันจะเป็นไปได้เพียงแค่ใช้ XDMCP แทน VNC หากไม่ได้อยู่ใน LAN เดียวกัน X ที่ไม่ได้รับการเร่งความเร็วในเครือข่ายอาจช้าเกินไป
Robin Green

คำตอบ:


10

ทางออกที่ดีที่สุดของคุณคือการติดตั้งxrdp ติดตั้ง xrdpหลังจากการติดตั้งคุณสามารถใช้ไคลเอนต์ RDP เพื่อเชื่อมต่อกับเครื่อง - จากนั้นคุณจะได้รับพร้อมท์ให้ใส่ข้อมูลประจำตัวของคุณตามที่คุณต้องการบนหน้าจอเข้าสู่ระบบ


ฉันติดตั้ง xrdp แล้ว แต่ฉันยังไม่สามารถเข้าถึงเครื่องอูบุนตูได้จากหน้าจอเข้าสู่ระบบ
karthick87

@karthick: คุณกำลังเชื่อมต่อกับเครื่องด้วย VNC หรือใช้ไคลเอนต์ RDP หรือไม่?
นาธานออสมัน

ฉันไม่พบไคลเอนต์ RDP ในเครื่องของฉัน มันจะอยู่ที่ไหน?
karthick87

@karthick: คุณใช้ Ubuntu เป็นลูกค้าของคุณหรือไม่ ถ้าเป็นเช่นนั้นโปรแกรมที่ใช้จะเรียกว่า "Terminal Server Client" บน Windows เรียกว่า "Remote Desktop" IIRC
นาธานออสมัน

ใช่ขอบคุณ เป็นไปได้หรือไม่ที่จะสร้างตัวเรียกใช้งานสำหรับไคลเอ็นต์เซิร์ฟเวอร์เทอร์มินัล
karthick87

5

โดยรวม, ฉันขอแนะนำให้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

ผ่านทางสถานี (หรือเริ่มต้นมันเป็น daemon กับ-foreverเป็นบริการ init.d , บริการพุ่งพรวด , หน่วย systemdหรือ แต่คุณต้องการ)

ตอนนี้เรียกใช้ไคลเอนต์ VNC ที่คุณเลือกจากโฮสต์ไคลเอ็นต์ของคุณชี้ไปที่: 127.0.0.1:5900, เข้าสู่ระบบด้วยรหัสผ่านที่บันทึกไว้ข้างต้น

ใช้ X11 "Magic Cookie"

ส่วนใหญ่ผู้จัดการ X จอแสดงผล (เช่นGDM , XDM , KDM ) เริ่มต้นเซิร์ฟเวอร์ X11 เริ่มต้นและการรับรองความถูกต้องไปพร้อมกับMIT เมจิกคุกกี้ ทั้งนี้ขึ้นอยู่กับผู้จัดการการแสดงผลของคุกกี้มายากลจะพบได้ในหนึ่งในสถานที่ต่างๆ

ฉันโชคดีที่เปิดเซสชัน VNC บนหน้าจอเข้าสู่ระบบ Ubuntu GDM * NOTE1โดยค้นหาคุกกี้วิเศษด้วยสคริปต์นี้ :

#!/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)

NOTE1 : ในรุ่น distro ใหม่บางรุ่นเช่น Ubuntu> = 17.10 จอแสดงผลเซสชัน GDM login X จะแยกจากการแสดงเซสชัน X ของผู้ใช้ที่ล็อกอิน ดังนั้นจึงจำเป็นต้องเชื่อมต่อกับเซสชัน GDM X ก่อนเข้าสู่ระบบ ... และในที่สุดตัดการเชื่อมต่อและเชื่อมต่อกับเซสชัน X ที่เพิ่งเริ่มต้นใหม่ ทำไมพวกเขาถึงทำแบบนี้มันเป็นปริศนา แต่มันทำให้เวอร์ชั่นเก่าของสคริปต์นี้พัง


ไม่ทำงาน, ไม่เป็นผล. การเชื่อมต่อไคลเอ็นต์ VNC นั้นจะปิดทันที
หรี่ลงใน

@Dims ใช้คำสั่ง:vncviewer <remote_ip>
Gokul NC

สคริปต์เสียหายสำหรับ Ubuntu รุ่นใหม่ ... ฉันอัปเดตด้วยแฮ็คเพื่อให้สามารถทำงานได้อีกครั้ง ดูเหมือนว่าตอนนี้เซสชันการแสดงผล gdm จะแยกจากเซสชันการลงชื่อเข้าใช้ดังนั้นหากคุณใช้สคริปต์นี้บน Ubuntu ก่อนอื่นคุณจะไปที่หน้าจอเข้าสู่ระบบ GDM จากนั้นเมื่อคุณลงชื่อเข้าใช้การแสดงเซสชัน X นี้จะว่างเปล่า ตอนนี้คุณต้องหยุดกระบวนการ x11vnc แรกและเรียกใช้สคริปต์อีกครั้งเพื่อแนบไฟล์เข้ากับเซสชัน X และจอแสดงผลที่แยกต่างหากอีกครั้ง
TrinitronX

2

หากต้องการเปิดใช้งานการเข้าสู่ระบบ GDM ผ่านการเชื่อมต่อระยะไกลของ VNC ssh ให้ลองใช้ X11vnc ดูคำตอบนี้ด้วย


0

ต่อไปนี้เป็นวิธีดำเนินการกับ VNC หากคุณไม่ต้องการใช้ RDP:

  1. ติดตั้งเซิร์ฟเวอร์ X11VNC: sudo apt-get install x11vnc(หรือผ่าน Ubuntu Software Center -> เซิร์ฟเวอร์ 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 ใด ๆ ก่อนที่จะเข้าสู่ระบบ


สิ่งนี้ไม่ทำงาน
กระบอง

@ ข้อความที่น่าสนใจมันได้ผลกับฉันบางทีมันขึ้นอยู่กับรุ่นของ Ubuntu น่าเสียดายที่ฉันจำรุ่น Ubuntu ของฉันไม่ได้เมื่อฉันทำตามขั้นตอนนี้
Didier A.

0

Re: ลองกับ X11vnc

x11vnc ยังไม่ได้รับการปรับปรุงตั้งแต่เดือนกันยายน 2011 !!!! มีข้อบกพร่องที่รู้จักกันและฉันได้รับ popped โดยหนึ่งที่ก่อให้เกิดการเลิกสแต็คของ x11vnc เมื่อใดก็ตามที่มีการโต้ตอบแบบป๊อปอัพ (เช่นคลิกเมนู 'ไฟล์' ในหน้าต่างใด ๆ ) ยกเลิกการเชื่อมต่อเซสชั่น

Raspberry pi สามารถเชื่อมต่อกับตัวจัดการเดสก์ท็อปบน: 0 ทำไมในนี้ถึงเป็นปัญหาเช่นนี้สำหรับ Ubuntu?!?! ทำไมจึงจำเป็นต้องพึ่งพาโปรแกรมเด็กกำพร้าอายุ 7 ปีเพื่อทำสิ่งนี้กับระบบปฏิบัติการที่ทันสมัย?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.