Comment configurer le partage de bureau à distance via SSH?

44

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

gerky
la source
Spécifique à SSH: askubuntu.com/questions/4474/…
Ciro Santilli a dévoilé le

Réponses:

51

Méthode 1:

Ceci peut être réalisé avec vino vnc server & remmina (les deux sont fournis par défaut avec ubuntu; sinon, installez-le en cours d'exécution sudo apt-get install remmina). Ensuite, exécutez les commandes suivantes de l'ordinateur local dans l'invite du terminal:

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

  2. vino-preferences. Cela ouvrira les préférences de vino.

    vino-préférence

  3. Cliquez également sur configure network automatically to accept connection. Mais n'entrez aucun mot de passe, son code base64 . Puis cliquez sur fermer. Puis lancez:

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

    Il va démarrer le serveur vino.

  4. Déconnexion du serveur:

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

    Sous l' basiconglet, mettez l'adresse du serveur dans le serverchamp.

    Sur l'onglet ssh, cliquez sur enable ssh tunnel. Sous ssh authentication, cela pourrait être passwordou public key:

    préférence remmina

    Cliquez sur Enregistrer. Ensuite, double-cliquez sur nom-connexion (home-desktop comme indiqué dans l'image) pour lancer la navigation sur le bureau distant.


Méthode 2:

x11vncest un simple serveur VNC et vous n’aurez pas à vous soucier des paramètres de Gnome ou de 500 pare-feu, mais installez-le x11vncsur tous vos ordinateurs (avec marionnette ou tout ce que vous utilisez pour le contrôle en masse).

Ensuite, à partir de votre ordinateur local, lancez:

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

Évidemment, permuter user@hostentre le nom d'utilisateur et le nom d'hôte / IP de l'ordinateur distant.

Et 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 redirige ce port par SSX. Vous n'avez pas besoin d'ouvrir de ports (tant que vous pouvez déjà utiliser SSH).

Si vos paramètres d’affichage sont amusants sur vos ordinateurs, il vaut mieux laisser le -display :0segment dans la commande SSH désactivé . x11vnctentera alors automatiquement de trouver le bon affichage.


Source: askubuntu

Khurshid Alam
la source
Si vous utilisez vncviewer avec une connexion ssh lente, votre commande devrait ressembler à vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(sous Debian / Ubuntu, le visualiseur provient de tightvnc) ou vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(sous Red Hat / Fedora, le visualiseur est issu de tigervnc), où le niveau de qualité sur Debian et Redhat est égal à. entre 0 et 9, où 9 est le meilleur, mais nécessite une connexion rapide.
erik
@erik Merci d'avoir expliqué comment l'utiliser avec vncviewerune connexion lente. Personnellement, je vais probablement régler QualityLevel=4 or 5parce que 0 qualitylevel(ce qui est 256 colors, je pense) est trop ennuyeux pour moi.
Khurshid Alam le
1
Votre "Méthode 2" est idéale pour un accès rapide à l’affichage physique à distance, sans aucun réglage permanent spécial. J'avais besoin d'ajouter le paramètre -auth comme expliqué dans le message d'erreur lorsque j'exécutais la commande mais que cela fonctionnait parfaitement. Merci!
Pierre
@gerky method 3 serait NoMachine, est actuellement le plus rapide et gratuit (malgré pas Open Source), et travaille aussi sur android
Aquarius Power
1
Pour la méthode 2, je devais l'utiliser -auth guesset l'exécuter en tant que root. Très utile, merci!
Bob Carlson
9

Vue d'ensemble de la solution

En supposant que vous ayez déjà configuré et OpenSSH Serversur votre ordinateur hôte, vous devez d'abord activer le contrôle du bureau sur votre ordinateur hôte. Si vous pouvez d'abord activer le contrôle du bureau sur votre ordinateur hôte localement, allez à 1a. Si vous devez d'abord activer le contrôle du bureau sur votre ordinateur hôte à distance, dirigez-vous sur 1b.

Créez ensuite un profil de client de bureau à distance sur votre ordinateur client afin de vous connecter à la machine hôte via un tunnel SSH et, au final, de visualiser et de contrôler le bureau de la machine hôte via un tunnel SSH.

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

Procédez comme suit sur la machine hôte:

vino-preferences
  • vino-preferences aussi dans Dash sous Desktop Sharing

entrez la description de l'image ici

  1. Cocher Allow other users to view your desktop
  2. Cocher Allow other users to control your desktop
  3. Cocher Require the user to enter this password
  4. Entrez un mot de passe difficile à deviner
  5. proche

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

Procédez comme suit sur la machine client, en remplaçant 123.123.12.3par l'adresse IP de votre machine hôte:

ssh -Y 123.123.12.3
  • -Y, active le transfert X11 de confiance. Les redirections X11 de confiance ne sont pas soumises aux contrôles d'extension X11 SECURITY.

vino-preferences
  • vino-preferences aussi dans Dash sous Desktop Sharing

entrez la description de l'image ici

  1. Cocher Allow other users to view your desktop
  2. Cocher Allow other users to control your desktop
  3. Cocher Require the user to enter this password
  4. Entrez un mot de passe difficile à deviner
  5. proche

Créer un profil de client de bureau à distance sur votre ordinateur client

Procédez comme suit sur la machine cliente:

remmina
  • remmina aussi dans Dash sous Remmina Remote Desktop Client

Ctrl+ Nou Connexion> Nouveau

entrez la description de l'image ici

  1. Entrez votre adresse IP [123.123.12.3] où il est indiqué Server
  2. Passer à l' SSHonglet

entrez la description de l'image ici

  1. Cocher Enable SSH Tunnel
  2. Pointez votre client de bureau sur votre port SSH non standard
  3. Définissez votre SSH Authentication <username>mode et
  4. Relier

Voir et contrôler la machine hôte

Sur la machine cliente, lorsque <username>le mot de passe vous est demandé , entrez-le pour créer le tunnel SSH. Lorsque le système vous demande le mot de passe VNC, entrez la phrase secrète que vous avez précédemment saisie dans la machine hôte.

En cas de succès à cette étape, vous devriez maintenant afficher et contrôler le bureau de la machine hôte à partir de votre ordinateur client via un tunnel SSH.

jtd
la source
Cela semble assez complet, mais où se trouve le port personnalisé 12345 défini sur l'hôte?
John T
Je suppose que vous avez besoin d'une commande ssh exécutée à partir du client quelque part, quelque chose comme: ssh -L 12345: localhost: 5900 user @ server_ip avant d'utiliser le client distant comme décrit.
John T
3

J'ai pu configurer une nouvelle installation Ubuntu 16.04 à partir d'une connexion ssh distante avec le script suivant:

#! / bin / bash
export AFFICHER =: 0
read -e -p "Mot de passe VNC: mot de passe" -i "ubuntu"
dconf write / org / gnome / desktop / accès à distance / enabled true
dconf write / org / gnome / desktop / accès à distance / prompt-enabled false
dconf write / org / gnome / desktop / accès à distance / authentication-methods "['vnc']"
dconf write / org / gnome / desktop / accès à distance / require-encryption false
dconf write / org / gnome / desktop / accès-distant / mot-de-passe-vnc \ "\ '$ (echo -n $ mot de passe | base64) \' \"
dconf dump / org / gnome / ordinateur de bureau / accès à distance /
sudo service lightdm restart

La citation est importante pour n'importe quel paramètre de chaîne (ticks simples entre guillemets). Pour que dconf puisse l'écrire, il faut avoir accès à XWindows. C'est pourquoi la partie exportation DISPLAY est nécessaire. Je pense que vous devez toujours être connecté au bureau sur la machine Ubuntu pour vous connecter à VNC après cela. La commande dump est juste là pour confirmer que tous les paramètres ont bien pris, vous n'avez pas vraiment besoin de ça.

Vous pouvez éventuellement le faire si vous souhaitez conserver l'affichage tout le temps:

dconf write / org / gnome / desktop / screensaver / verrouillé-activé false
dconf write / org / gnome / bureau / économiseur d'écran / Ubuntu-lock-on-suspendre false
dconf write / org / gnome / desktop / session / idle-delay "uint32 0"
Intégrateur
la source
2
  1. Vous pouvez utiliser ssh pour démarrer une session vnc
  2. Utilisez-le Xnestavec X11 forwording pour démarrer une session à distance et la transférer sur votre ordinateur actuel. (Je le fais de temps en temps avec ma pi) page de manuel

J'utilise Xnestcomme si:

  • Xnest :1 -ac &
  • puis DISPLAY=:1 . /etc/X11/Xsession
sage
la source
0

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

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

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

Installez vino-serversi ce n'est pas déjà installé. Par exemple:

sudo apt install vino

Activer le partage de bureau (correspondant au 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

Démarrez un visualiseur VNC et connectez-vous localhostà l'adresse du serveur VNC.

Futal
la source
J'ai le suivant. On dirait que tout cela suppose que vous êtes déjà connecté à une console graphique? 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
algue
0

basé sur @Khurshid Alam répondre, je présente l'extrait suivant:

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

  • C'est une commande qui ne nécessite aucune interaction

  • Il crée le tunnel SSH avec la redirection de port, démarre x11vncde manière raisonnablement sûre et lance et connecte le visualiseur VNC.

  • Il nécessite x11vnc sur l'hôte cible, mais aucune configuration supplémentaire

  • Il nécessite vinagre sur votre PC, mais vous pouvez le changer pour un autre lecteur VNC
mnagel
la source
0

Dans le PC serveur.

  • Ouvrez les "préférences vino" depuis le terminal ou "Partage du bureau" à l'aide de dash.

vino-préférences

Dans le PC client (à partir duquel vous souhaitez contrôler l'interface utilisateur du serveur).

  • Conservez les paramètres comme indiqué dans les images ci-dessous (avec les modifications à la place du nom d'utilisateur et de l'adresse IP).

* Basic * onglet *Onglet Avancé * SSH * onglet

Pièges.

  • Lorsque j'ai essayé de définir les préférences vino sur le serveur à partir d'un PC distant à l'aide de SSH, la situation a été modifiée, mais la connexion ne s'est pas établie. Je devais le faire directement sur la machine du serveur (pas à distance). Je ne connais pas la raison de ce comportement.
vineeshvs
la source