Bagaimana cara mengakses mesin ubuntu melalui VNC dari layar login?

17

Saya ingin mengakses mesin Ubuntu dari jarak jauh melalui VNC. Tapi saya bisa mengakses mesin Ubuntu hanya jika pengguna login. Saya ingin mengakses mesin ubuntu melalui VNC dari layar login itu sendiri. Kami dapat mengakses semua mesin windows dari layar login. Namun kami tidak dapat mengakses mesin Ubuntu dari layar masuk. Ada beberapa cara tetapi saya tidak mengetahui detailnya. Adakah yang bisa memberikan solusi untuk masalah ini?

karthick87
sumber
Jika mesin lain berada di LAN yang sama akan layak untuk hanya menggunakan XDMCP bukan VNC. Jika tidak pada LAN yang sama, X yang tidak terhapus melalui jaringan mungkin terlalu lambat.
Robin Green

Jawaban:

10

Taruhan terbaik Anda adalah menginstal xrdp Instal xrdp . Setelah instalasi, Anda dapat menggunakan klien RDP untuk terhubung ke mesin - Anda kemudian akan diminta untuk kredensial Anda karena Anda akan berada di layar login.

Nathan Osman
sumber
Saya telah menginstal xrdp tetapi saya masih tidak dapat mengakses mesin ubuntu dari layar login.
karthick87
@karthick: Apakah Anda terhubung ke mesin dengan VNC atau menggunakan klien RDP?
Nathan Osman
Saya tidak menemukan klien RDP di mesin saya. Di mana ia akan berada?
karthick87
@karthick: Apakah Anda menggunakan Ubuntu sebagai klien Anda? Jika demikian, program yang akan digunakan disebut "Terminal Server Client". Di Windows, itu disebut "Remote Desktop" IIRC.
Nathan Osman
Ya terima kasih. Apakah mungkin untuk membuat peluncur untuk Terminal Server Client?
karthick87
5

Secara keseluruhan, saya akan merekomendasikanx11vnc .

TL; DR

apt-get -y install x11vnc
x11vnc -storepasswd

Masukkan kata sandi Anda, itu disimpan secara default di ~/.vnc/passwd dalam formulir terenkripsi INSECURE. Itu bisa didekripsi karena kuncinya diketahui. .. melindunginya dengan izin filesystem)

chmod 600 ~/.vnc/passwd

Simpan skrip pembantu saya secara lokal:

mkdir ~/bin/
curl https://gist.githubusercontent.com/trinitronx/76d2bf98489e5e3e84fa/raw/53885d87f91320b574ca4f7d609e4bb268274f68/start_x11vnc.sh  > ~/bin/start_x11vnc.sh && chmod +x ~/bin/start_x11vnc.sh

Dari host Klien VNC Anda:

ssh -f  -L 5900:127.0.0.1:5900 -p 22 [email protected] '~/bin/start_x11vnc.sh && sleep 10'

Atau, dari host VNC Server Anda, jalankan:

~/bin/start_x11vnc.sh

melalui terminal (atau memulainya sebagai daemon dengan -foreversebagai layanan init.d , layanan pemula , unit systemd , atau apa pun yang Anda inginkan)

Sekarang jalankan Klien VNC pilihan Anda dari Host Klien Anda, arahkan ke 127.0.0.1:5900:, login dengan kata sandi yang disimpan di atas.

Gunakan "Magic Cookie" X11

Sebagian besar manajer tampilan X (seperti GDM , XDM , KDM ) memulai server X11 awal dan mengautentikasi dengan Cookie Sihir MIT . Bergantung pada manajer tampilan Anda, cookie ajaib akan ditemukan di salah satu dari berbagai lokasi .

Saya beruntung mendapatkan sesi VNC terbuka di layar login GDM Ubuntu * NOTE1 dengan menemukan cookie ajaib dengan skrip ini :

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

Saya dapat memulai skrip ini (saya menyebutnya start_x11vnc.sh) kapan saja melalui SSH ... bahkan sebelum masuk melalui gdmlayar login. Ini meluncurkan x11vncserver yang kemudian saya dapat terhubung ke melalui terowongan SSH . (Gunakan ssh -L 5900:127.0.0.1:5900atau tambahkan LocalForward 5900 127.0.0.1:5900ke entri host Anda di ~/.ssh/config).

CATATAN1 : Dalam beberapa rilis distro baru seperti Ubuntu> = 17.10, tampilan sesi GDM login X benar-benar terpisah dari tampilan sesi X pengguna yang login. Karena itu, pertama-tama perlu menyambung ke sesi GDM X, masuk ... dan akhirnya memutuskan koneksi dan menyambung kembali ke sesi X yang baru dimulai. Mengapa mereka melakukannya dengan cara ini adalah sebuah misteri, tetapi itu merusak versi lama dari skrip ini.

TrinitronX
sumber
Tidak bekerja. Klien VNC terhubung kemudian segera ditutup
Dims
@Dims Gunakan perintah:vncviewer <remote_ip>
Gokul NC
script rusak untuk versi baru Ubuntu ... Saya memperbaruinya dengan retasan untuk mengaktifkannya kembali. Sepertinya sekarang sesi tampilan gdm sekarang terpisah dari sesi login, jadi jika Anda menggunakan skrip ini di Ubuntu, maka pertama-tama Anda akan dibawa ke layar login GDM, kemudian ketika Anda login tampilan sesi X ini menjadi kosong. Sekarang Anda harus menghentikan proses x11vnc pertama dan menjalankan kembali skrip untuk melampirkan kembali ke sesi & tampilan X login yang terpisah.
TrinitronX
2

Untuk mengaktifkan login GDM melalui koneksi jarak jauh VNC ssh, coba dengan X11vnc. Lihat juga jawaban ini .

Takkat
sumber
0

Inilah cara melakukannya dengan VNC, jika Anda tidak ingin menggunakan RDP:

  1. Instal server X11VNC: sudo apt-get install x11vnc(Atau melalui Ubuntu Software Center -> X11VNC Server)
  2. Setel kata sandi:

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

    Pilih yuntuk menyimpan kata sandi.

  3. Buat file kosong dengan /etc/initnama x11vnc.conf:

    sudo -H gedit /etc/init/x11vnc.conf
    
  4. Rekatkan ini ke file:

    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. Simpan dan tutup

  6. Mulai ulang Ubuntu

Itu dia! Anda sekarang harus dapat terhubung dengan klien VNC bahkan sebelum login.

Didier A.
sumber
Ini tidak berhasil.
fuli
@ace Menarik, itu berhasil untuk saya, mungkin tergantung pada versi Ubuntu. Sayangnya, saya tidak ingat versi Ubuntu saya ketika saya melakukan prosedur ini.
Didier A.
0

re: coba dengan X11vnc

x11vnc belum diperbarui sejak september 2011 !!!! Ada bug yang diketahui dan saya mendapatkan bug yang memicu penghentian stack smash dari x11vnc setiap kali dialog pop-up (seperti mengklik menu 'file' di jendela mana saja) memutuskan sesi.

Raspberry pi dapat terhubung ke sesi manajer desktop pada: 0, mengapa ini menjadi masalah untuk Ubuntu?!?! Mengapa perlu bergantung pada program anak yatim berusia 7 tahun untuk melakukan ini pada sistem operasi modern?

Scott
sumber