Come accedere a una macchina Ubuntu tramite VNC dalla schermata di accesso?


17

Voglio accedere a una macchina Ubuntu da remoto tramite VNC. Ma posso accedere alla macchina Ubuntu solo se l'utente ha effettuato l'accesso. Voglio accedere alla macchina Ubuntu tramite VNC dalla schermata di accesso stessa. Siamo in grado di accedere a tutti i computer Windows dalla schermata di accesso. Tuttavia non siamo stati in grado di accedere alla macchina Ubuntu dalla schermata di accesso. C'è un modo, ma non sono a conoscenza dei dettagli. Qualcuno può dare una soluzione a questo problema?


Se l'altra macchina si trova sulla stessa LAN, sarebbe possibile utilizzare solo XDMCP anziché VNC. Se non si trova sulla stessa LAN, X non accelerato sulla rete potrebbe essere troppo lento.
Robin Green,

Risposte:


10

La soluzione migliore è installare xrdp Installa xrdp . Dopo l'installazione, è possibile utilizzare un client RDP per connettersi alla macchina: verranno quindi richieste le credenziali come nella schermata di accesso.


Ho installato xrdp ma non riesco ancora ad accedere alla macchina Ubuntu dalla schermata di accesso.
karthick87,

@karthick: ti stai collegando alla macchina con VNC o stai usando un client RDP?
Nathan Osman,

Non trovo il client RDP nella mia macchina. Dove sarà situato?
karthick87,

@karthick: stai usando Ubuntu come client? In tal caso, il programma da utilizzare si chiama "Terminal Server Client". Su Windows, si chiama IIRC "Desktop remoto".
Nathan Osman,

Si grazie. È possibile creare un launcher per Terminal Server Client?
karthick87,

5

Nel complesso, lo consigliereix11vnc .

TL; DR

apt-get -y install x11vnc
x11vnc -storepasswd

Inserisci la tua password, viene salvata per impostazione predefinita in ~/.vnc/passwd in forma criptata INSECURE. Può essere decrittografato perché la chiave è nota. .. proteggilo con le autorizzazioni del filesystem)

chmod 600 ~/.vnc/passwd

Salva il mio script di supporto localmente:

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

Dal tuo host client VNC:

ssh -f  -L 5900:127.0.0.1:5900 -p 22 youruser@your-ubuntu-host.example.com '~/bin/start_x11vnc.sh && sleep 10'

Oppure, dal tuo host VNC Server, esegui:

~/bin/start_x11vnc.sh

tramite un terminale (o avviarlo come daemon con -forevercome servizio init.d , servizio di avvio , unità systemd o come desiderato)

Ora esegui il tuo client VNC preferito dal tuo host client, puntalo su 127.0.0.1:5900:, accedi con la password salvata sopra.

Usa X11 "Magic Cookie"

La maggior parte dei display manager X (come GDM , XDM , KDM ) avvia un server X11 iniziale e si autentica con un MIT Magic Cookie . A seconda del gestore della visualizzazione, il cookie magico verrà trovato in una delle varie posizioni .

Ho avuto la fortuna di aprire una sessione VNC sulla schermata di accesso di Ubuntu GDM * NOTA1 trovando il cookie magico con questo script :

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

Posso avviare questo script (l'ho chiamato start_x11vnc.sh) in qualsiasi momento tramite SSH ... anche prima dell'accesso tramite la gdmschermata di accesso. Avvia un x11vncserver al quale posso quindi collegarmi tramite il tunnel SSH . (Usa ssh -L 5900:127.0.0.1:5900o aggiungi LocalForward 5900 127.0.0.1:5900alla voce del tuo host in ~/.ssh/config).

NOTA 1 : in alcune nuove versioni di distro come Ubuntu> = 17.10, il display della sessione X di accesso GDM è completamente separato dal display della sessione X dell'utente connesso. Pertanto, è necessario prima connettersi alla sessione GDM X, accedere ... e infine disconnettersi e riconnettersi alla sessione X appena avviata. Perché ora lo fanno in questo modo è un mistero, ma ha rotto la vecchia versione di questo script.


Non funziona. Il client VNC si collega quindi si chiude immediatamente
Dim

@Dims Usa il comando:vncviewer <remote_ip>
Gokul NC

lo script era rotto per le nuove versioni di Ubuntu ... L'ho aggiornato con un trucco per consentirgli di funzionare di nuovo. Sembra che ora la sessione di visualizzazione di gdm sia ora separata dalla sessione di accesso, quindi se stai usando questo script su Ubuntu, ti porterà prima alla schermata di accesso GDM, quindi quando accedi a questo display della sessione X diventa vuoto. Ora è necessario interrompere il primo processo x11vnc ed eseguire nuovamente lo script per ricollegarlo alla sessione e alla visualizzazione X separate.
TrinitronX


0

Ecco come farlo con VNC, se non vuoi usare RDP:

  1. Installa il server X11VNC: sudo apt-get install x11vnc(o tramite Ubuntu Software Center -> X11VNC Server)
  2. Imposta una password:

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

    Scegli ydi salvare la password.

  3. Crea un file vuoto in /etc/initchiamato x11vnc.conf:

    sudo -H gedit /etc/init/x11vnc.conf
    
  4. Incollalo nel 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. Salva e chiudi

  6. Riavvia Ubuntu

Questo è tutto! Ora dovresti essere in grado di connetterti con qualsiasi client VNC anche prima dell'accesso.


Questo non ha funzionato.
mazza

@mace Interessante, ha funzionato per me, forse dipende dalla versione di Ubuntu. Sfortunatamente, non ricordo quale versione di Ubuntu fosse quando ho eseguito questa procedura.
Didier A.

0

ri: prova con X11vnc

x11vnc non è stato aggiornato da settembre del 2011 !!!! Ci sono bug noti e ne vengo spuntato uno che innesca una fine dello stack smash di x11vnc ogni volta che un dialogo pop-up (come fare clic sul menu 'file' su qualsiasi finestra) disconnette la sessione.

Raspberry Pi può connettersi alla sessione di desktop manager su: 0, perché diavolo è questo un problema per Ubuntu?!?! Perché è necessario fare affidamento su un programma orfano di 7 anni per farlo su qualsiasi sistema operativo moderno?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.