Come impostare la condivisione desktop remoto tramite SSH?


Risposte:


51

Metodo 1:

Questo può essere ottenuto con il server vino vnc e remmina (entrambi sono predefiniti con Ubuntu; in caso contrario installarlo eseguendo sudo apt-get install remmina). Quindi eseguire i seguenti comandi dal computer locale nel prompt del terminale:

  1. ssh -Y gman@remote. Usa l'inoltro X11 affidabile, altrimenti non funzionerà

  2. vino-preferences. Aprirà le preferenze del vino.

    vino-preferenza

  3. Fare clic anche configure network automatically to accept connection. Ma non inserire alcuna password, codificata in base64 . Quindi fare clic su Chiudi. Quindi eseguire:

    sudo -s
    
    export DISPLAY=:0.0
    
    xhost +
    
    /usr/lib/vino/vino-server & 
    

    Avvierà il server del vino.

  4. Disconnettersi dal server:

    xhost -
    
    Press CTRL+C twice
    
    exit
    
    exit
    
  5. Quindi apri remmina . Scegli vncsotto protocollo.

    Nella basicscheda inserisci l'indirizzo del server nel servercampo.

    Nella scheda SSH fare clic enable ssh tunnel. Sotto ssh authentication, potrebbe essere passwordo public key:

    Remmina-preferenza

    Fai clic su Salva. Quindi fai doppio clic su nome connessione (home-desktop come mostrato in figura) per iniziare a navigare sul desktop remoto.


Metodo 2:

x11vncè un semplice server VNC e non dovrai fare confusione con le impostazioni di Gnome o 500 firewall, basta installarlo x11vncsu tutti i tuoi computer (con le marionette o qualunque cosa tu stia usando per il controllo di massa).

Quindi dal tuo computer locale esegui:

ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"

Ovviamente scambiando user@hostil nome utente e il nome host / IP del computer remoto.

E quindi utilizzare un client VNC a scelta per connettersi localhost:5900. Il comando SSH avvia un server vnc sul computer remoto e quindi esegue il tunneling di quella porta su SSH. Non è necessario aprire alcuna porta (purché sia ​​già possibile SSH).

Se i tuoi computer hanno impostazioni di visualizzazione divertenti, potresti fare meglio a lasciare il -display :0segmento nel comando SSH. x11vncproverà quindi automaticamente a trovare il display giusto.


Fonte: askubuntu


Se stai usando vncviewer con una connessione ssh lenta, il tuo comando dovrebbe apparire come vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(su Debian / Ubuntu il visualizzatore proviene da tightvnc) o vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(su Red Hat / Fedora il visualizzatore proviene da tigervnc), dove il livello di qualità sia su Debian che su Redhat è tra 0 e 9, dove 9 è il migliore, ma necessita di una connessione veloce.
Erik,

@erik Grazie per aver spiegato come usarlo vncviewerper una connessione lenta. Personalmente, probabilmente impostare QualityLevel=4 or 5perché 0 qualitylevel(che è 256 colors, penso) è troppo noioso per me.
Khurshid Alam,

1
Il tuo "Metodo 2" è perfetto per un rapido accesso al display fisico da remoto senza particolari impostazioni permanenti. Avevo bisogno di aggiungere il parametro -auth come spiegato nel messaggio di errore quando ho eseguito il comando ma altrimenti funziona perfettamente. Grazie!
Pierre,

Il metodo @gerky 3 sarebbe NoMachine, al momento è il più veloce e gratuito (nonostante non opensource), e funziona anche su Android
Aquarius Power

1
Per il metodo 2, ho dovuto usarlo -auth guessed eseguirlo come root. Molto utile, grazie!
Bob Carlson,

9

Panoramica della soluzione

Supponendo che tu abbia già configurato un OpenSSH Servercomputer host, devi prima abilitare il controllo desktop sul tuo computer host. Se puoi prima abilitare il controllo desktop sul tuo computer host localmente, vai a 1a. Se devi prima abilitare il controllo desktop sul tuo computer host da remoto, vai a 1b.

Quindi, creare un profilo Client desktop remoto sul computer client per connettersi al computer host attraverso un tunnel SSH e, infine, visualizzare e controllare il desktop del computer host attraverso un tunnel SSH.

1 bis. Abilita localmente il controllo remoto della macchina host

Effettuare le seguenti operazioni sul computer host:

vino-preferences
  • vino-preferences anche in Dash sotto Desktop Sharing

inserisci qui la descrizione dell'immagine

  1. zecca Allow other users to view your desktop
  2. zecca Allow other users to control your desktop
  3. zecca Require the user to enter this password
  4. Immettere una passphrase difficile da indovinare
  5. Vicino

1b. Abilita in remoto il controllo remoto della macchina host

Effettuare le seguenti operazioni sul computer client, sostituendolo 123.123.12.3con l'indirizzo IP del computer host:

ssh -Y 123.123.12.3
  • -Y, abilita l'inoltro X11 affidabile. Gli inoltri X11 affidabili non sono soggetti ai controlli dell'estensione X11 SECURITY.

vino-preferences
  • vino-preferences anche in Dash sotto Desktop Sharing

inserisci qui la descrizione dell'immagine

  1. zecca Allow other users to view your desktop
  2. zecca Allow other users to control your desktop
  3. zecca Require the user to enter this password
  4. Immettere una passphrase difficile da indovinare
  5. Vicino

Crea il profilo del client desktop remoto sul tuo computer client

Effettuare le seguenti operazioni sul computer client:

remmina
  • remmina anche in Dash sotto Remmina Remote Desktop Client

Ctrl+ No Connessione> Nuovo

inserisci qui la descrizione dell'immagine

  1. Inserisci il tuo indirizzo IP [123.123.12.3] dove dice Server
  2. Passa alla SSHscheda

inserisci qui la descrizione dell'immagine

  1. zecca Enable SSH Tunnel
  2. Puntare il client desktop alla porta SSH non standard
  3. Imposta la SSH Authentication <username>modalità e
  4. Collegare

Visualizza e controlla la macchina host

Sul computer client, quando viene richiesta <username>la password, immetterla per creare il tunnel SSH. Quando viene richiesta la password VNC, immettere la passphrase precedentemente immessa nel computer host.

Se l'operazione ha esito positivo in questo passaggio, ora dovresti visualizzare e controllare il desktop del computer host dal tuo computer client attraverso un tunnel SSH.


Questo sembra abbastanza completo, ma dove è definita la porta personalizzata 12345 sull'host?
John T,

Immagino che tu abbia bisogno di un comando ssh eseguito dal client da qualche parte, qualcosa come: ssh -L 12345: localhost: 5900 user @ server_ip prima di usare il client remoto come descritto.
John T,

3

Sono stato in grado di impostare una nuova installazione di Ubuntu 16.04 da una connessione ssh remota con il seguente script:

#! / Bin / bash
export DISPLAY =: 0
leggi -e -p "Password VNC: password" -i "ubuntu"
dconf write / org / gnome / desktop / accesso remoto / abilitato vero
dconf write / org / gnome / desktop / accesso remoto / prompt-enabled false
dconf write / org / gnome / desktop / accesso remoto / metodi di autenticazione "['vnc']"
dconf write / org / gnome / desktop / accesso remoto / richiede crittografia falso
dconf write / org / gnome / desktop / accesso remoto / password vnc \ "\ '$ (echo -n $ password | base64) \' \"
dconf dump / org / gnome / desktop / accesso remoto /
sudo service lightdm restart

La citazione è importante per qualsiasi impostazione di stringa (segni di spunta all'interno delle virgolette). Perché dconf sia in grado di scrivere ha bisogno dell'accesso a XWindows, quindi è necessario il motivo per esportare la parte DISPLAY. Penso che dopo questo sia necessario accedere al desktop sul computer Ubuntu reale per connettersi con VNC. Il comando dump è proprio lì per confermare che tutte le impostazioni sono state bloccate, non ne hai davvero bisogno.

Opzionalmente potresti voler fare questo se vuoi mantenere il display sempre attivo:

dconf write / org / gnome / desktop / screensaver / lock-enabled falso
dconf write / org / gnome / desktop / screensaver / ubuntu-lock-on-suspend false
dconf write / org / gnome / desktop / session / idle-delay "uint32 0"

2
  1. È possibile utilizzare ssh per avviare una sessione vnc
  2. Utilizzare Xnestcon X11 forwording per avviare in remoto una sessione e inoltrarla al computer corrente. (Lo faccio di tanto in tanto con la mia pagina man )

Uso Xnestcosì:

  • Xnest :1 -ac &
  • poi DISPLAY=:1 . /etc/X11/Xsession

0

Come avviare il server Vino da remoto senza inoltrare X (solo riga di comando)

Accedere al computer remoto come l'utente che condividerà il desktop e inoltrerà la porta 5900 alla stessa porta su localhost. Con PuTTY, il reindirizzamento è impostato in Connessione / SSH / Tunnel. Con una riga di comando, utilizzare:

 ssh -L 5900:localhost:5900 user@remote-computer

Installa vino-serverse non è già installato. Per esempio:

sudo apt install vino

Abilita condivisione desktop (corrispondente al numero visualizzato sulla 1a e 2a riga):

echo $DISPLAY
export DISPLAY=:0
dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled true
dbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled false
dbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server

Avviare un visualizzatore VNC e connettersi localhostper l'indirizzo del server VNC.


Ho il seguente. Sembra tutto questo presuppone che tu sia già connesso a una console GUI? No protocol specified Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Could not connect: Connection refused Cannot open display: Run 'vino-server --help' to see a full list of available command line options
algal

0

basato sulla risposta di @Khurshid Alam vi presento il seguente frammento:

ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost

  • È un comando che non richiede alcuna interazione

  • Crea il tunnel SSH con il port forwarding, si avvia x11vncin modo ragionevolmente sicuro e avvia e collega il visualizzatore VNC

  • Richiede x11vnc sull'host di destinazione, ma nessuna ulteriore configurazione

  • Richiede vinagre sul tuo PC, ma puoi cambiarlo banalmente per un altro visualizzatore VNC

0

Nel PC server.

  • Apri "vino-preferenze" dal terminale o "Desktop Sharing" usando il trattino.

Vino-preferenze

Nel PC client (da dove si desidera controllare l'interfaccia utente del server).

  • Conservare le impostazioni come mostrato nelle immagini seguenti (con modifiche al posto di nome utente e IP).

Scheda * Base * Scheda * Avanzate * Scheda * SSH *

Insidie.

  • Quando ho provato a impostare le preferenze del vino nel server da un PC remoto utilizzando SSH, è stato modificato, ma la connessione non è avvenuta. Ho dovuto farlo direttamente nella macchina server (non da remoto). Non conosco il motivo di questo comportamento.
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.