Outils pour utilisateurs

Outils du site


vnc_debian

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

vnc_debian [2007/12/15 09:35] (Version actuelle)
tyrtamos créée
Ligne 1: Ligne 1:
 +====== Accès à distance par VNC sur un compte ouvert ======
 +
 +===== Objectif =====
 +
 +On dispose d'un ordinateur avec une debian etch, installée avec un bureau graphique (gnome ou KDE). 
 +
 +Il s'agit ici d'​obtenir à distance sur un autre ordinateur, par l'​intermédiaire d'une liaison réseau, le bureau graphique de la debian.
 +
 +Dans ce tuto, l'​accès à distance concernera uniquement un compte déjà ouvert sur l'​ordinateur. ​
 +\\ Attention: il y a une autre solution, traitée ailleurs, qui donne accès à la page de login, permettant ainsi à chaque utilisateur d'​accéder à distance à son bureau.
 +
 +Ce qui suit a été testé sur une debian etch fraichement installée:
 +
 +  * pour les spécificités "​gnome":​ avec gnome mais sans KDE,
 +
 +  * pour les spécificités "​KDE":​ avec KDE mais sans gnome,
 +
 +  * pour les non-spécifiques dans les 2 situations: gnome sans KDE et KDE sans gnome.
 +
 +===== Principe de solution =====
 +
 +Deux cas différents:​
 +
 +  * 1- Accès à distance avec affichage du même écran graphique que celui déjà affiché en local
 +    * dans ce cas, toute modification sur l'un des écrans se répercute immédiatement sur l'​autre
 +    * => on utilise "​vino"​ pour gnome et "​krfb"​ pour KDE.
 +
 +  * 2- Accès à distance à un bureau graphique suplémentaire du compte déjà ouvert en local
 +    * => on utilise "​vnc4server"​ (gnome et KDE).
 +
 +===== 1- Accès à distance avec affichage du même écran graphique que celui déjà affiché en local =====
 +
 +==== Cas de gnome ====
 +
 +On utilise "​vino",​ installé par défaut avec gnome. Si vous ne l'avez pas, installez-le (paquet "​vino"​).
 +
 +Pour configurer vino, on lance au menu gnome: Bureau -> Préférences -> Bureau à distance. On peut aussi appeler "​vino-preferences"​ dans une console sous votre login.
 +
 +vous pouvez configurer comme suit:
 +
 +{{vnc:​vinoconfig.jpg|}}
 +
 +Si vous cochez "vous demandez confirmation",​ il faudra que quelqu'​un devant l'​ordinateur soit là pour répondre "​oui"​.
 +
 +Le mot de passe est le mot de passe de la connexion vnc, pas celui de l'​utilisateur.
 +
 +Après cette config, c'est tout pour le côté serveur vnc.
 +
 +Sur la machine cliente, utilisez un client vnc de votre choix:
 +
 +  * vnc4viewer sur linux en console
 +  * Terminal Serveur Client (tsclient) sur gnome
 +  * Krdc sur KDE
 +  * realvnc, tightvnc ou ultravnc sur Windows
 +
 +Donnez l'​adresse suivante (mettez la bonne adresse):
 +
 +  192.168.0.215:​0
 +
 +ou, bien entendu:
 +
 +  192.168.0.215:​5900
 +
 +Et vous aurez une fenêtre avec le même écran que celui qui est affiché sur l'​ordinateur serveur. Toute modification sur l'un des écrans (y compris la souris) se répercutera sur l'​autre!
 +
 +Bon, ce n'est pas très rapide de ce fait (charge de synchronisation permanente des 2 écrans).
 +
 +On peut passer par internet, mais ce n'est pas raisonnable,​ car les mots de passe circulent en clair: il faut dans ce cas mettre la liaison vnc dans un tunnel SSH. Voir plus loin pour cela!
 +
 +==== Cas de KDE ====
 +
 +On utilise "​krfb",​ installé par défaut avec KDE. Si vous ne l'avez pas, installez-le (paquet "​XXXXX"​).
 +
 +Pour configurer krfb, on lance au menu KDE: menu -> système -> krfb Partage de bureau.
 +
 +Puis -> bouton "​configurer"​
 +
 +vous pouvez configurer comme suit:
 +
 +{{vnc:​krfbconfig.jpg|}}
 +
 +Si vous cochez "​Confirmer les connexions non-invitées avant acceptation",​ il faudra que quelqu'​un devant l'​ordinateur soit là pour répondre "​oui"​.
 +
 +Le mot de passe est le mot de passe de la connexion vnc, pas celui de l'​utilisateur.
 +
 +Prenez l'​onglet "​Réseau"​ et décochez la case pour être sûr que le port choisi sera bien "​5900"​.
 +
 +Après cette config, c'est tout pour le côté serveur vnc.
 +
 +Sur la machine cliente, utilisez un client vnc de votre choix:
 +
 +  * vnc4viewer sur linux en console
 +  * Terminal Serveur Client (tsclient) sur gnome
 +  * Krdc sur KDE
 +  * realvnc, tightvnc ou ultravnc sur Windows
 +
 +Donnez l'​adresse suivante (mettez la bonne adresse):
 +
 +  192.168.0.215:​0
 +
 +ou, bien entendu:
 +
 +  192.168.0.215:​5900
 +
 +Et vous aurez une fenêtre avec un bureau graphique supplémentaire du compte déjà ouvert en local.
 +
 +On peut passer par internet, mais ce n'est pas raisonnable,​ car les mots de passe circulent en clair: il faut dans ce cas mettre la liaison vnc dans un tunnel SSH. Voir plus loin pour cela!
 +
 +\\
 +===== 2- Accès à distance à un bureau graphique suplémentaire du compte déjà ouvert en local =====
 +
 +==== Installer le serveur VNC ====
 +
 +Installation du paquet "​vnc4server"​ qui entraine l'​installation de vnc4-common
 +
 +==== Activer XDMCP ====
 +
 +Pour permettre l'​accès graphique à distance, il faut activer XDMCP:
 +
 +=== Avec gdm de gnome ===
 +
 +Vous pouvez configurer correctement avec le programme graphique: Bureau -> Administration -> fenêtre de connexion.
 +
 +Onglet "​Distante"​. Choix style: "​Identique à locale"​.
 +
 +A la fin, votre fichier /​etc/​gdm/​gdm.conf doit avoir:
 +
 +  [xdmcp]
 +  Enable=true
 +
 +Relancez gdm par:
 +
 +  # /​etc/​init.d/​gdm restart
 +
 +Si à la suite de cette commande vous vous retrouvez en console (écran noir), loguez-vous en root et lancez gdm avec:
 +
 +  # /​etc/​init.d/​gdm start
 +
 +=== Avec kdm de KDE ===
 +
 +Dans un éditeur de texte sous root, cherchez dans le fichier /​etc/​kde3/​kdm/​kdmrc le bloc de données commençant par
 +
 +  [Xdmcp]
 +
 +Et dans ce bloc, activez XDMCP comme suit:
 +
 +  Enable=true
 +
 +=== Et relancer kdm par: ===
 +
 +  # /​etc/​init.d/​kdm restart
 +
 +Si à la suite de cette commande vous vous retrouvez en console (écran noir), loguez-vous en root et lancez kdm avec:
 +
 +  # /​etc/​init.d/​kdm start
 +
 +==== Lancer le serveur VNC une première fois ====
 +
 +Lancer vnc4server la 1ère fois sous votre login (pas sous root!)
 +
 +  $ vnc4server
 +
 + -> il vous demande de définir un mot de passe pour la connexion VNC (et vous le fait répéter), mais il ne le demandera plus les fois suivantes: ce mot de passe servira à l'​authentification du client VNC.
 +
 + -> et lance l'​écran "​1"​ (en fait, le 1er écran non déjà pris, l'​écran :0 étant l'​écran qui est affiché et que vous utilisez normalement).
 +
 + -> vous pouvez demander un écran particulier (non encore pris!), par exemple l'​écran :3:
 +
 +  $ vnc4server :3
 +
 +Vous pouvez aussi demander une définition particulière d'​écran,​ pour s'​ajuster au mieux au moniteur que vous avez sur votre machine cliente:
 +
 +  $ vnc4server :1 -geometry 1680x1050 -depth 24
 +
 +Cela représente une fonctionnalité très intéressante. En effet, si, par exemple, votre écran normal sur le serveur VNC est de 1280x1024:
 +
 +  * vous pouvez demander un écran 1680x1050 (par exemple) à distance pour avoir le plein écran sur la machine cliente. ​
 +
 +  * Ou au contraire un écran 800x600 pour diminuer la charge du réseau (si ça passe par internet par exemple).
 +
 +==== Correction du fichier de lancement xstartup ====
 +
 +La 1ère fois que vnc4server est lancé, il fabrique un script de lancement dans votre home: /​home/​user/​.vnc/​xstartup. Nous allons modifier ce script (éditeur sous votre login).
 +
 +Il faut décommenter les 2 lignes au début comme cela est proposé (en anglais). Puis, il faudra ajouter à ce fichier le lancement du bureau graphique, selon que vous serez sous KDE ou sous gnome. ​
 +
 +=== Sous gnome: ===
 +
 +<​code>​
 +#!/bin/sh
 +
 +# Uncomment the following two lines for normal desktop:
 +unset SESSION_MANAGER
 +exec /​etc/​X11/​xinit/​xinitrc
 +
 +[ -x /​etc/​vnc/​xstartup ] && exec /​etc/​vnc/​xstartup
 +[ -r $HOME/​.Xresources ] && xrdb $HOME/​.Xresources
 +xsetroot -solid grey
 +vncconfig -iconic &
 +x-terminal-emulator -geometry 80x24+10+10 -ls -title "​$VNCDESKTOP Desktop"​ &
 +x-window-manager &
 +gnome-session &
 +</​code>​
 +
 +=== Sous KDE: ===
 +
 +<​code>​
 +#!/bin/sh
 +
 +# Uncomment the following two lines for normal desktop:
 +unset SESSION_MANAGER
 +exec /​etc/​X11/​xinit/​xinitrc
 +
 +[ -x /​etc/​vnc/​xstartup ] && exec /​etc/​vnc/​xstartup
 +[ -r $HOME/​.Xresources ] && xrdb $HOME/​.Xresources
 +xsetroot -solid grey
 +vncconfig -iconic &
 +x-terminal-emulator -geometry 80x24+10+10 -ls -title "​$VNCDESKTOP Desktop"​ &
 +x-window-manager &
 +startkde &
 +</​code>​
 +
 +=== Rendre le script /​etc/​X11/​xinit/​xinitrc exécutable ===
 +
 +(mais pourquoi ne l'​est-il pas? j'ai cherché un bon moment...). ​
 +
 +En console sous root, cela donnera:
 +
 +  # cd /​etc/​X11/​xinit
 +  # chmod a+x xinitrc
 +
 +==== Correction des chemins de recherche des polices de caractères ====
 +
 +Quand on lance vnc4server et qu'on regarde le fichier log /​home/​user/​.vnc/​nomduserveur:​1:​log,​ on constate un certain nombre d'​erreurs concernant des polices de caractères non trouvées. Messages du genre:
 +
 +  Could not init font path element /​usr/​share/​fonts/​X11/​100dpi,​ removing from list!
 +
 +En fait, le serveur VNC cherche les polices de caractères ici: /​usr/​X11R6/​lib/​X11/​fonts alors qu'​elles sont là: /​usr/​share/​fonts/​X11. ​
 +
 +Pour éviter cela, il suffit d'​ajouter des liens symboliques suivants (en console sous root):
 +
 +  # cd /​usr/​X11R6/​lib/​X11/​fonts
 +  # ln -s /​usr/​share/​fonts/​X11/​misc misc
 +  # ln -s /​usr/​share/​fonts/​X11/​100dpi 100dpi
 +  # ln -s /​usr/​share/​fonts/​X11/​75dpi 75dpi
 +  # ln -s /​usr/​share/​fonts/​X11/​Type1 Type1
 +
 +Pour éviter l'​erreur qui concerne la police de caractères "​cyrillic",​ il suffit d'​installer cette police (paquet "​xfonts-cyrillic"​) et, bien sûr, d'​ajouter comme précédemment le lien symbolique qui manque (en étant toujours dans le répertoire précédent /​usr/​X11R6/​lib/​X11/​fonts). ​
 +
 +  # ln -s /​usr/​share/​fonts/​X11/​cyrillic cyrillic
 +
 +Mais bon, les caractères cyrillic...
 +
 +Pour éviter l'​erreur suivante:
 +
 +  Could not init font path element /​var/​lib/​defoma/​x-ttcidfont-conf.d/​dirs/​TrueType,​ removing from list!
 +
 +il suffit d'​installer le paquet: "​x-ttcidfont-conf"​.
 +
 +Après tout cela, le lancement du serveur VNC ne déclenche plus aucune erreur dans le fichier log (c'est quand même plus propre :-D).
 +
 +==== Redémarrage du serveur VNC ====
 +
 +Après ces modifications,​ il faut tuer l'​écran créé (ici, on a pris l'​exemple du ":​1"​) et le relancer (en console sous votre login):
 +
 +  $ vnc4server -kill :1
 +  $ vnc4server :1
 +
 +==== Lancer le client VNC ====
 +
 +Vous pouvez utiliser n'​importe quel client VNC:
 +
 +  * vnc4viewer sur linux en console
 +  * Terminal Serveur Client (tsclient) sur gnome
 +  * Krdc sur KDE
 +  * realvnc, tightvnc ou ultravnc sur Windows
 +
 +Dans tous les cas, l'​adresse à indiquer dans ces client VNC sera (ajuster l'​adresse IP et le numéro d'​écran):​
 +
 +  192.168.0.215:​1
 +
 +ou encore (remarquez les 2 points!):
 +
 +  192.168.0.215::​5901
 +
 +Sur linux, avec le vnc4viewer installé, cela donnerait (en console sous votre login):
 +
 +  $ vncviewer 192.168.0.215:​1
 +
 +Avec Windows, j'​utilise realvnc, bien qu'il ne soit pas le plus performant, parce que c'est le seul qui me passe tous les caractères de mon clavier, y compris les caractères qui demandent 2 touches successives (comme "​ê"​).
 +
 +Avec tous les clients VNC, il vous sera demandé le mot de passe de la connexion VNC (celui que vous avez rentré en lançant le serveur la 1ère fois sur votre compte), et vous aurez une fenêtre graphique avec votre bureau.
 +
 +\\
 +===== Sécurisation d'une connexion VNC par un tunnel SSH =====
 +
 +NB: pour le tunnel SSH, ça fonctionne de la même façon pour KDE et pour gnome.
 +
 +==== Préalable pour SSH côté serveur VNC ====
 +
 +En plus de la configuration du serveur VNC comme ci-dessus, il vous faut SSH  :-D (installez le paquet "​ssh"​ si vous ne l'avez pas, et vérifiez qu'il est activé).
 +
 +
 +==== Lancement d'une connexion VNC-SSH avec Windows XP ====
 +
 +On utilise le programme putty comme console SSH pour Windows. Si vous ne l'avez pas, installez-le:​ [[http://​www.chiark.greenend.org.uk/​~sgtatham/​putty/​]].
 +
 +Pour mettre en place le tunnel, lancez putty et configurez-le comme suit:
 +
 +  * Page "​session"​ -> case "host name" -> mettez l'​adresse du serveur VNC (192.168.0.215 dans mon exemple)
 +
 +  * Page connexion->​SSH->​tunnel: ​
 +    * case "​source port" -> mettre "​5909"​
 +    * case "​destination"​ -> mettre "​localhost:​5901"​
 +    * cliquer sur le bouton "​add"​
 +
 +Vous pouvez sauvegarder sous un nom de votre choix (à chaque lancement de putty, toutes les cases sont vides).
 +
 +Et vous lancez la connexion (bouton "​open"​ en bas)
 +
 +La 1ère fois, il vous est demandé si c'est bien la machine que vous voulez atteindre (selon son "​fingerprint"​) -> yes
 +
 +  * après cette réponse, le serveur VNC sera inscrit comme "hôte connu" dans votre machine cliente et la question ne vous sera plus posée. ​
 +
 +  * Si vous passez par internet, il serait prudent d'​avoir connaissance du fingerprint SSH du serveur VNC pour éviter les usurpations d'​adresses. ​
 +
 +Dans la console SSH -> vous vous loguez sous votre compte (celui de la machine serveur VNC que vous voulez atteindre).
 +
 +C'est tout pour putty: le tunnel est maintenant en place.
 +
 +Lancez maintenant le client VNC (realvnc, tight, ultravnc, ...), avec l'​adresse suivante:
 +
 +  localhost:9
 +
 +ou, bien sûr,
 +
 +  localhost::​5909
 +
 +Et vous aurez une fenêtre avec le bureau graphique du serveur VNC, ouvert sur votre compte. Mais cette fois-ci, tout passera par le tunnel SSH à commencer, bien sûr, par les mots de passe. ​
 +
 +Si vous avez à traverser un parefeu, n'​oubliez pas d'​ouvrir le port 22 (=SSH).
 +
 +**Cas particulier:​ partage de l'​écran déjà affiché en local** ​
 +
 +Si vous avez choisi le partage complet de l'​écran déjà affiché en local (cf chapitre 1 de cette page):
 +
 +===> Dans l'​exemple précédent,​ il suffit de remplacer "​5901"​ par "​5900"​
 +
 +
 +==== Lancement d'une connexion VNC-SSH avec Linux ====
 +
 +Comme pour le serveur VNC, il vous faut SSH activé (paquet "​ssh"​).
 +
 +Dans une console sous votre login (pas en "​root"​!),​ vous faites:
 +
 +  $ ssh -L 5909:​localhost:​5901 ​ 192.168.0.215
 +
 +=> 5909: ce sera le nouveau port à mettre dans le client vnc pour passer par le tunnel SSH
 +
 +=> 5901: c'est le port à atteindre effectivement au bout du tunnel SSH pour atteindre le serveur VNC (et l'​écran :1 déjà ouvert sous votre compte)
 +
 +=> 192.168.0.215:​ c'est l'​adresse de la machine serveur vnc (on pourrait avoir un nom de domaine)
 +
 +Pour la 1ère fois, il vous est demandé si c'est bien la machine que vous voulez atteindre (selon son "​fingerprint"​) -> "​yes"​.
 +
 +  * Le client SSH inscrit alors cette machine comme "hôte connu" et ne vous reposera plus la question. ​
 +
 +  * Si vous passez par internet, il serait prudent d'​avoir connaissance du fingerprint SSH du serveur VNC pour éviter les usurpations d'​adresses. ​
 +
 +Le lancement de cette commande vous demande votre mot de passe (celui de votre compte déjà ouvert sur la machine serveur VNC que vous voulez atteindre).
 +
 +Et vous laissez la console ouverte!
 +
 +Vous lancer alors votre client VNC préféré (vncviewer (paquet "​vnc4viewer"​) en console sous votre login, ou Krdc sur KDE, ou lsclient sur gnome) avec comme adresse:
 +
 +  localhost:9
 +
 +ou, bien sûr:
 +
 +  localhost::​5909
 +
 +Après l'​introduction du mot de passe de la connexion VNC, vous aurez la fenêtre avec le bureau graphique du serveur VNC ouvert sur votre compte. Mais cette fois-ci, tout passera par un tunnel SSH, à commencer, bien sûr, par les mots de passe. ​
 +
 +Si vous avez à traverser un parefeu, n'​oubliez pas d'​ouvrir le port 22 (=SSH).
 +
 +**Cas particulier:​ partage de l'​écran déjà affiché en local** ​
 +
 +Si vous avez choisi le partage complet de l'​écran déjà affiché en local (cf chapitre 1 de cette page):
 +
 +===> Dans l'​exemple précédent,​ il suffit de remplacer "​5901"​ par "​5900"​
  
vnc_debian.txt · Dernière modification: 2007/12/15 09:35 par tyrtamos