59 votes

Comment configurer le partage de bureau à distance via SSH ?

Existe-t-il un moyen d'afficher (et de contrôler) un bureau à distance via SSH ? Je n'aurai pas d'accès physique à la machine hôte distante.

65voto

tsilb Points 4356

Méthode 1 :

Ceci peut être réalisé avec vino vnc server & remmina (les deux sont livrés par défaut avec ubuntu ; sinon installez-les en exécutant sudo apt-get install remmina ). Exécutez ensuite les commandes suivantes à partir de l'ordinateur local dans l'invite du terminal :

  1. ssh -Y gman@remote . Utilisez la redirection X11 de confiance, sinon cela ne fonctionnera pas.

  2. vino-preferences . Il ouvrira les préférences en matière de vin.

    vino-preference

  3. Cliquez également configure network automatically to accept connection . Mais n'entrez pas de mot de passe, il est encodé en base64. . Cliquez ensuite sur fermer. Puis exécutez :

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

    Cela va démarrer le serveur vino.

  4. Déconnexion du serveur :

    xhost -
    
    Press CTRL+C twice
    
    exit
    
    exit
  5. Ensuite, ouvrez remmina . Choisissez vnc sous protocole.

    Sous basic l'adresse du serveur dans l'onglet server champ.

    Dans l'onglet ssh, cliquez sur enable ssh tunnel . Sous ssh authentication il pourrait être password o public key :

    remmina-preference

    Cliquez sur enregistrer. Puis double-cliquez sur le nom de la connexion (home-desktop comme indiqué dans l'image) pour commencer à naviguer sur le bureau distant.


Méthode 2 :

x11vnc est un simple serveur VNC et vous n'aurez pas à vous embêter avec les paramètres de Gnome ou 500 pare-feu, il suffit d'installer x11vnc sur tous vos ordinateurs (avec Puppet ou ce que vous utilisez pour le contrôle de masse).

Puis, à partir de votre ordinateur local, exécutez :

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

Évidemment, il faut échanger user@host pour le nom d'utilisateur et le nom d'hôte/IP de l'ordinateur distant.

Puis utilisez un client VNC de votre choix pour vous connecter à localhost:5900 . La commande SSH démarre un serveur vnc sur l'ordinateur distant, puis établit un tunnel vers ce port par SSH. Vous n'avez pas besoin d'ouvrir de ports (tant que vous pouvez déjà utiliser SSH).

Si vos ordinateurs ont des paramètres d'affichage bizarres, vous feriez mieux de laisser de côté l'option -display :0 dans la commande SSH. x11vnc essaiera alors automatiquement de trouver le bon affichage.


Source : askubuntu

11voto

jtd Points 2347

Aperçu de la solution

En supposant que vous avez déjà configuré un OpenSSH Server sur votre machine hôte, vous devez d'abord activer le contrôle des bureaux sur votre machine hôte. Si vous pouvez d'abord activer localement le contrôle des ordinateurs sur votre machine hôte, passez à la section 1a. Si vous devez d'abord activer le contrôle des ordinateurs sur votre machine hôte à distance, passez à la section 1b.

Créez ensuite un profil Client Bureau à distance sur votre ordinateur client afin de vous connecter à l'ordinateur hôte par le biais d'un tunnel SSH et, finalement, de visualiser et de contrôler le bureau de l'ordinateur hôte par le biais d'un tunnel SSH.

1a. Activation locale du contrôle à distance de la machine hôte

Effectuez les opérations suivantes sur la machine hôte :

vino-preferences
  • vino-preferences également dans Dash sous Desktop Sharing

enter image description here

  1. Tic-tac Allow other users to view your desktop
  2. Tic-tac Allow other users to control your desktop
  3. Tic-tac Require the user to enter this password
  4. Entrez une phrase de passe difficile à deviner
  5. Fermer

1b. Activer le contrôle à distance de la machine hôte

Effectuez les opérations suivantes sur la machine cliente, en remplaçant 123.123.12.3 avec l'adresse IP de votre machine hôte :

ssh -Y 123.123.12.3
  • -Y, Active le transfert de confiance X11. Les transferts X11 de confiance ne sont pas soumis aux contrôles de l'extension X11 SECURITY.

    vino-preferences

  • vino-preferences également dans Dash sous Desktop Sharing

enter image description here

  1. Tic-tac Allow other users to view your desktop
  2. Tic-tac Allow other users to control your desktop
  3. Tic-tac Require the user to enter this password
  4. Entrez une phrase de passe difficile à deviner
  5. Fermer

Créez un profil client Remote Desktop sur votre machine cliente

Effectuez les opérations suivantes sur la machine cliente :

remmina
  • remmina également dans Dash sous Remmina Remote Desktop Client

Ctrl + N ou Connexion > Nouveau

enter image description here

  1. Saisissez votre adresse IP [123.123.12.3] à l'endroit indiqué. Server
  2. Passez à la SSH onglet

enter image description here

  1. Tic-tac Enable SSH Tunnel
  2. Dirigez votre client de bureau vers votre port SSH non standard.
  3. Définissez votre SSH Authentication <username> et le mode
  4. Connectez-vous à

Visualiser et contrôler la machine hôte

Sur la machine cliente, lorsque l'on demande <username> Entrez le mot de passe de l'utilisateur pour créer le tunnel SSH. Lorsqu'on vous demande le mot de passe VNC, entrez la phrase de passe que vous avez précédemment entrée dans la machine hôte.

Si cette étape est réussie, vous devriez maintenant pouvoir visualiser et contrôler le bureau de la machine hôte à partir de votre machine cliente via un tunnel SSH.

3voto

Integrator Points 231

J'ai pu paramétrer une installation fraîche d'Ubuntu 16.04 à partir d'une connexion ssh distante avec le script suivant :

#!/bin/bash
export DISPLAY=:0
read -e -p "VNC Password: " -i "ubuntu" password
dconf write /org/gnome/desktop/remote-access/enabled true
dconf write /org/gnome/desktop/remote-access/prompt-enabled false
dconf write /org/gnome/desktop/remote-access/authentication-methods "\['vnc'\]"
dconf write /org/gnome/desktop/remote-access/require-encryption false
dconf write /org/gnome/desktop/remote-access/vnc-password \\"\\'$(echo -n $password | base64)\\'\\"
dconf dump /org/gnome/desktop/remote-access/
sudo service lightdm restart

Les guillemets sont importants pour tous les paramètres de la chaîne de caractères (points simples entre guillemets). Pour que dconf soit capable d'écrire, il doit avoir accès à XWindows, c'est pourquoi la partie export DISPLAY est nécessaire. Je pense que vous devez toujours être connecté au bureau de la machine Ubuntu actuelle pour vous connecter avec VNC après cela. La commande dump est juste là pour confirmer que tous les paramètres ont été pris en compte, vous n'en avez pas vraiment besoin.

Cette option est facultative si vous souhaitez que l'écran reste allumé en permanence :

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

2voto

TJSoler Points 471
  1. Vous pouvez utiliser ssh pour démarrer une session vnc.
  2. Utilice Xnest avec les mots-clés X11 pour démarrer une session à distance et la transmettre à votre ordinateur actuel. (Je fais cela de temps en temps avec mon pi) <a href="http://www.xfree86.org/4.2.0/Xnest.1.html" rel="nofollow">page de manuel</a>

J'utilise Xnest comme ça :

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

1voto

Futal Points 111

Comment démarrer le serveur Vino à distance sans redirection X (en ligne de commande uniquement)

Connectez-vous à l'ordinateur distant en tant qu'utilisateur qui partagera son bureau et transférez le port 5900 vers le même port sur localhost. Avec PuTTY, la redirection est définie dans Connexion/SSH/Tunnels. Avec une ligne de commande, utilisez :

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

Installer vino-server s'il n'est pas déjà installé. Par exemple :

sudo apt install vino

Activez le partage de bureau (en faisant correspondre le numéro d'affichage sur les 1ère et 2ème lignes) :

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

Lancez une visionneuse VNC et connectez-vous à localhost pour l'adresse du serveur VNC.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X