<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<chapter>
<title>Machines virtuelles distantes</title>
<sect1 id="vrde">
<title>Affichage distant (VRDP support)</title>
<para>VirtualBox peut afficher les machines virtuelles à distance, ce qui
signifie qu'une machine virtuelle peut s'exécuter sur un ordinateur alors que
la machine sera affichée sur un deuxième ordinateur, et la machine sera
contrôlée également à partir de là, comme si la machine virtuelle fonctionnait
sur ce deuxième ordinateur.</para>
<para>Pour une flexibilité maximum, à partir de VirtualBox 4.0, VirtualBox
implémente l'affichage distant d'une machine par une interface d'extension
générique, le VirtualBox Remote Desktop Extension (VRDE). Le paquet libre
de base VirtualBox ne fournit pas cette interface, tandis que les implémentations
peuvent être offerts par des tiers avec les paquets d'extension de VirtualBox
qui doivent être installés séparément du paquet. Voir <xref
linkend="intro-installing" /> pour plus d'informations.</para>
<para>Oracle fournit un support pour le <emphasis role="bold">VirtualBox
Remote Display Protocol (VRDP)</emphasis> dans ce paquet d'extension de
VirtualBox. Quand on installe ce paquet, les versions de VirtualBox et
4.0 et supérieur supportent VRDP de la même façon que les versions binaires
(non libre)) de VirtualBox avant 4.0.</para>
<para>VRDP est une extension rétro-compatible au Remote
Desktop Protocol (RDP) de Microsoft. Dès lors, vous pouvez utiliser n'importe
quel client RDP standard pour contrôler la VM distante.</para>
<para>Même quand l'extension est installée, le serveur VRDP est désactivé par
défaut. On peut l'activer facilement pour chaque VM, soit dans le gestionnaire
VirtualBox des paramètres d'"Affichage" (voir <xref
linkend="settings-display" />), soit avec
)s <computeroutput>VBoxManage</computeroutput>:<screen>VBoxManage modifyvm "nom VM" --vrde on</screen></para>
<para>Si vous utilisez <computeroutput>VBoxHeadless</computeroutput> (décrit
plus loin en détails), le support VRDP sera automatiquement activé puisque
VBoxHeadless n'a aucun autre moyen de sortie.</para>
<para>Par défaut, le serveur VRDP utilise le port TCP
<computeroutput>3389</computeroutput>. Vous devrez modifier le port par
défaut si vous exécutez plus d'un serveur VRDP, vu que le port ne peut être
utilisé que par un serveur à la fois. Il se pourrait aussi que vous deviez
le modifier sur les hôtes Windows car le port par défaut pourrait être
déjà utilisé par le serveur RDP
intégré à Windows lui-même. Les ports 5000 à 5050 sont le plus souvent
inusités et pourraient être un bon choix.</para>
<para>Vous pouvez modifier le port soit dans les paramètres "Affichage" de
l'interface graphique, soit via l'option <computeroutput>--vrdeport</computeroutput>
de la commande <computeroutput>VBoxManage modifyvm</computeroutput>. Vous
pouvez indiquer une liste séparée par des virgules de ports ou de plages de
ports. Utilisez un tiret entre deux numéros de ports pour indiquer une plage.
Le serveur VRDP s'appuiera sur <emphasis role="bold">un</emphasis> des
ports disponibles au sein de la liste spécifiée. Par exemple, <computeroutput>VBoxManage modifyvm "nom
VM" --vrdeport 5000,5010-5012</computeroutput> configurera le
serveur pour s'appuyer sur un des ports parmi le 5000, 5010, 5011 ou 5012.
Voir <xref
linkend="vboxmanage-modifyvm-vrde" /> pour des détails.</para>
<para>Vous pouvez savoir le port utilisé au final par une VM en fonction
avec la commande <computeroutput>VBoxManage showvminfo</computeroutput>,
vous pouvez aussi le voir dans l'interface graphique sous l'onglet "En cours
d'exécution" de la "Boîte de dialogue d'informations sur la session", accessible
depuis le menu "Machine" de la fenêtre de la VM.</para>
<para>Le support d'IPv6 a été implémenté dans VirtualBox 4.3. Si l'OS hôte
supporte l'IPv6, le serveur VRDP écoutera automatiquement les connexions IPv6
en plus de celles IPv4.</para>
<sect2 id="rdp-viewers">
<title>Visualiseurs RDP tiers classiques</title>
<para>Comme VRDP est rétro-compatible avec RDP, vous pouvez utiliser n'importe
quel visualiseur RDP standard pour vous connecter à une machine virtuelle
distante (des exemples figurent ci-dessous). Pour que cela fonctionne, vous
devez spécifier <emphasis role="bold">l'adresse IP</emphasis> de votre
système <emphasis>hôte</emphasis> (pas celle de la machine virtuelle&#xA0;!)
l'adresse du serveur auquel se connecter, ainsi que le
<emphasis role="bold">numéro du port</emphasis> qu'utilise le serveur RDP.</para>
<para>Voici des exemples de visualiseurs RDP les plus courants&#xA0;:<itemizedlist>
<listitem>
<para>Sur Windows, vous pouvez utiliser le Microsoft Terminal Services
Connector (<computeroutput>mstsc.exe</computeroutput>) inclu dans
Windows. Vous pouvez le lancer depuis la boîte de dialogue "Exécuter"
(appuyez sur la touche Windows et "R") en tapant "mstsc". Vous pouvez
également le trouver dans "Démarrer" -&gt; "Tous les Programmes" -&gt; "Accessoires"
-&gt; "Connexion bureau distant". Si vous utilisez la boîte de dialogue
"Exécuter", vous pouvez y entrer des options directement&#xA0;:<screen>mstsc 1.2.3.4:3389</screen></para>
<para>Remplacez <computeroutput>1.2.3.4</computeroutput> par l'adresse IP de l'hôte et
<computeroutput>3389</computeroutput> par un
autre port si nécessaire.</para>
<note>
<para>Il faut entourer les adresses IPv6 de crochets pour spécifier
un port. Par exemple, <computeroutput>mstsc [fe80::1:2:3:4]:3389</computeroutput></para>
</note>
<note>
<para>Lors d'une connexion à localhost pour tester la connexion, les
adresses <computeroutput>localhost</computeroutput> et
<computeroutput>127.0.0.1</computeroutput> pourraient ne pas
fonctionner en utilisant
<computeroutput>mstsc.exe</computeroutput>. L'adresse
<computeroutput>127.0.0.2[:3389]</computeroutput> doit être utilisée à la place.</para>
</note>
</listitem>
<listitem>
<para>Sur les autres systèmes, vous pouvez utiliser le programme
libre standard <computeroutput>rdesktop</computeroutput>. Celui-ci
est inclu avec la plupart des distributions Linux, mais VirtualBox
est fourni avec une variante modifiée de rdesktop pour un support de
l'USB à distance (voir <xref
linkend="usb-over-rdp" /> ci-dessous).</para>
<para>Avec rdesktop, utilisez une ligne telle que celle-ci&#xA0;:<screen>rdesktop -a 16 -N 1.2.3.4:3389</screen></para>
<para>Comme indiqué pour le visualiseur Microsoft ci-dessus, remplacez <computeroutput>1.2.3.4</computeroutput>
par l'adresse IP de l'hôte et <computeroutput>3389</computeroutput> par un autre port si nécessaire.
L'option <computeroutput>-a 16</computeroutput> demande que la résolution
soit de 16 bits par pixel, ce qui est recommandé.
(Pour de meilleures performances, après l'installation du système
d'exploitation invité, vous devriez définir sa profondeur d'affichage
des couleurs à la même valeur).
L'option <computeroutput>-N</computeroutput> permet d'utiliser
les touches du pavé numérique.</para>
</listitem>
<listitem>
<para>Si vous lancez le bureau KDE, vous pourriez préférer
<computeroutput>krdc</computeroutput>, le visualiseur RDP de KDE.
La ligne de commande ressemblerait à ceci&#xA0;:<screen>krdc rdp://1.2.3.4:3389</screen></para>
<para>De nouveau, remplacez <computeroutput>1.2.3.4</computeroutput>
par l'adresse IP de l'hôte et <computeroutput>3389</computeroutput> par un port différent si nécessaire. Le champ "rdp://" est
requis avec krdc pour qu'il passe en mode RDP.</para>
</listitem>
<listitem>
<para>Avec les clients Sun Ray thin, vous pouvez utiliser
<computeroutput>uttsc</computeroutput>, qui fait partie du paquet
Sun Ray Windows Connector. Voir la documentation correspondante pour
des détails.</para>
</listitem>
</itemizedlist></para>
</sect2>
<sect2 id="vboxheadless">
<title>VBoxHeadless, le serveur de bureau distant</title>
<para>Si toutes les VM lancées dans le gestionnaire VirtualBox sont capables
de lancer des machines virtuelles à distance, ce n'est pas pratique de
lancer l'interface graphique full-fledged si vous ne voulez jamais avoir
de VMs affichées en local au premier plan. En particulier, si vous lancez
un serveur matériel dont le seul objectif est d'héberger des VMs et où
toutes les VMs sont supposées se lancer à distance via VRDP, il est inutile
d'avoir une interface graphique quelconque sur le serveur -- surtout
que sur un hôte Linux ou Solaris, le gestionnaire VirtualBox est fourni
avec les dépendances des bibliothèques Qt et SDL. C'est un inconvénient si
ne voulez pas du tout avoir de système X Window sur votre serveur.</para>
<para>VirtualBox est donc fourni avec une autre interface appelée
<computeroutput>VBoxHeadless</computeroutput>, qui ne produit aucune
sortie visible sur l'hôte, mais qui produit des données VRDP. Cette interface
n'a aucune dépendance du système X Window sur Linux et des hôtes
Solaris.<footnote>
<para>Avant VirtualBox 1.6, le serveur headless s'appelait
<computeroutput>VBoxVRDP</computeroutput>. Toujours pour des raisons de
rétro-compatibilité, l'installation de VirtualBox installe toujours un
exécutable avec ce nom.</para>
</footnote></para>
<para>Pour démarrer une machine virtuelle avec <computeroutput>VBoxHeadless</computeroutput>,
vous avez trois options&#xA0;:</para>
<itemizedlist>
<listitem>
<para>Vous pouvez utiliser <screen>VBoxManage startvm "nom VM" --type headless</screen>L'option
supplémentaire <computeroutput>--type</computeroutput> amène VirtualBox
à utiliser <computeroutput>VBoxHeadless</computeroutput> en tant qu'interface
avec le moteur de virtualisation interne plutôt que l'interface Qt.</para>
</listitem>
<listitem>
<para>Une alternative est d'utiliser
<computeroutput>VBoxHeadless</computeroutput> directement, comme
suit&#xA0;:<screen>VBoxHeadless --startvm &lt;uuid|name&gt;</screen></para>
<para>Cette manière de démarrer la VM aide au dépannage des problèmes
signalés par <computeroutput>VBoxManage startvm ...</computeroutput>
car vous pouvez voir parfois des messages d'erreur plus détaillés,
surtout pour les échecs imtervenant avant que l'exécution de la VM
ne commence. Dans des situations normales, on préfère
<computeroutput>VBoxManage startvm</computeroutput> car il lance la VM
directement comme tâche de fond, ce qui doit se faire explicitement lors
du démarrage direct de
<computeroutput>VBoxHeadless</computeroutput>.</para>
</listitem>
<listitem>
<para>L'autre alternative est de démarrer <computeroutput>VBoxHeadless</computeroutput>
à partir de l'interface graphique du gestionnaire de VirtualBox, en
maintenant appuyée la touche Majuscule au démarrage de la machine.</para>
</listitem>
</itemizedlist>
<para>Remarquez que quand vous utilisez
<computeroutput>VBoxHeadless</computeroutput> pour démarrer une VM, comme
le serveur headless n'a aucun autre moyen d'affichage, le serveur VRDP
sera <emphasis>toujours</emphasis> activé, indépendamment du fait que vous
ayez activé le serveur VRDP dans les paramètres de la VM ou pas. Si vous
n'en voulez pas (par exemple parce que vous voulez accéder à la VM via
<computeroutput>ssh</computeroutput> only), démarrez la VM comme
ceci&#xA0;:<screen>VBoxHeadless --startvm &lt;uuid|name&gt; --vrde off</screen>Pour
activer le serveur VRDP en fonction de la configuration de la VM, comme le
feraient les autres interfaces, utilisez ceci&#xA0;:<screen>VBoxHeadless --startvm &lt;uuid|name&gt; --vrde config</screen></para>
<para>Si vous démarrez la VM avec <computeroutput>VBoxManage startvm ...</computeroutput>,
les paramètres de configuration de la VM sont toujours utilisés.</para>
</sect2>
<sect2>
<title>Pas à pas&#xA0;: créer une machine virtuelle sur un serveur headless</title>
<para>Les instructions suivantes peuvent vous donner une idée de la façon
de créer une machine virtuelle sur un serveur headless via une connexion
réseau. Nous allons créer une machine virtuelle, établir une connexion RDP
et installer un système d'exploitation invité -- tout ceci sans devoir
toucher au serveur headless. Tout ce dont vous avez besoin est ce qui suit&#xA0;:</para>
<para><orderedlist>
<listitem>
<para>VirtualBox sur une machine serveur avec un système d'exploitation
hôte supporté. La pack d'extension de VirtualBox du serveur VRDP doit
être installé (voir la section précédente). Pour l'exemple suivant,
nous supposerons un serveur Linux.</para>
</listitem>
<listitem>
<para>Un fichier ISO accessible depuis le serveur, contenant les
données d'installation du système invité pour installer (nous supposons
que c'est Windows XP dans l'exemple suivant).</para>
</listitem>
<listitem>
<para>Une connexion en terminal à l'hôte par lequel vous pouvez accéder
à une ligne de commande (par exemple via
<computeroutput>ssh</computeroutput>).</para>
</listitem>
<listitem>
<para>Un visualiseur RDP sur le client distant&#xA0;; voir <xref
linkend="rdp-viewers" /> ci-dessus pour des exemples.</para>
</listitem>
</orderedlist>Remarquez encore que sur la machine serveur, comme nous
n'allons utiliser que le serveur headless, ni Qt ni SDL ni le système
X Window ne seront nécessaires.</para>
<para><orderedlist>
<listitem>
<para>Sur le serveur headless, créez une nouvelle machine virtuelle&#xA0;:</para>
<screen>VBoxManage createvm --name "Windows XP" --ostype WindowsXP --register</screen>
<para>Remarquez que si vous ne spécifiez pas
<computeroutput>--register</computeroutput>, vous devrez utiliser
manuellement la commande <computeroutput>registervm</computeroutput>
plus tard.</para>
<para>Remarquez aussi que vous n'avez pas besoin de spécifier
<computeroutput>--ostype</computeroutput>, mais en le faisant, cela
sélectionne des valeurs par défaut apropriées pour certains paramètres
de la VM, par exemple la taille de la RAM et le type de périphérique
réseau virtuel. Pour avoir la liste complète des systèmes d'exploitation
supportés, vous pouvez utiliser</para>
<screen>VBoxManage list ostypes</screen>
</listitem>
<listitem>
<para>Assurez-vous que les paramètres de la VM sont adaptés au système
d'exploitation invité que nous allons installer. Par exemple&#xA0;:<screen>VBoxManage modifyvm "Windows XP" --memory 256 --acpi on --boot1 dvd --nic1 nat</screen></para>
</listitem>
<listitem>
<para>Créez un disque dur virtuel pour la VM (dans ce cas, 10Go de
taille)&#xA0;:<screen>VBoxManage createhd --filename "WinXP.vdi" --size 10000</screen></para>
</listitem>
<listitem>
<para>Ajoutez un contrôleur IDE à la nouvelle VM&#xA0;:<screen>VBoxManage storagectl "Windows XP" --name "IDE Controller"
--add ide --controller PIIX4</screen></para>
</listitem>
<listitem>
<para>Mettez le fichier VDI créé ci-dessus comme premier disque dur
virtuel de la nouvelle VM&#xA0;:<screen>VBoxManage storageattach "Windows XP" --storagectl "IDE Controller"
--port 0 --device 0 --type hdd --medium "WinXP.vdi"</screen></para>
</listitem>
<listitem>
<para>Attachez le fichier ISO contenant l'installeur du système
d'exploitation que vous voudrez installer plus tard sur la
machine virtuelle, pour que la machine puisse démarrer dessus&#xA0;:<screen>VBoxManage storageattach "Windows XP" --storagectl "IDE Controller"
--port 0 --device 1 --type dvddrive --medium /full/path/to/iso.iso</screen></para>
</listitem>
<listitem>
<para>Démarrez la machine virtuelle en utilisant VBoxHeadless:<screen>VBoxHeadless --startvm "Windows XP"</screen></para>
<para>Si tout s'est bien passé, vous devriez voir un message de
copyright. Si vous êtes renvoyé en ligne de commande, quelque chose
n'a pas fonctionné.</para>
</listitem>
<listitem>
<para>Sur la machine client, ouvrez le visualiseur RDP et essayez
de vous connecter au serveur (voir <xref linkend="rdp-viewers" />
ci-dessus pour voir comment utiliser les divers visualiseurs RDP
classiques).</para>
<para>Vous devriez voir maintenant le processus d'installation
de votre système d'exploitation invité, à distance dans le visualiseur RDP.</para>
</listitem>
</orderedlist></para>
</sect2>
<sect2 id="usb-over-rdp">
<title>USB distant</title>
<para>Une fonction très spéciale du support VRDP de VirtualBox est qu'il
supporte les périphériques USB distants également via le réseau. C'est-à-dire que
l'invité de VirtualBox en fonction sur l'ordinateur peut accéder à des
périphériques USB de l'ordinateur distant sur lequel sont affichées les données
VRDP de la même manière que des périphériques USB connectés à l'hôte actuel.
Cela permet d'exécuter des machines virtuelles sur un hôte VirtualBox qui
agit comme serveur, où un client peut se connecter de n'importe où avec
simplement un adaptateur réseau et un dispositif d'affichage capable de
lancer un visualiseur RDP. Quand on branche des périphériques USB
dans le client, le serveur VirtualBox distant peut y accéder.</para>
<para>Pour ces périphériques USB distants, les mêmes règles de filtres
s'appliquent, comme pour d'autres périphériques USB, comme décrit au
<xref linkend="settings-usb" />. Tout ce que vous devez faire est de spécifier
"Remote" (ou "Any") en définissant ces règles.</para>
<para>L'accès à des périphériques USB n'est possible que si le client RDP
supporte cette extension. Sur les hôtes Linux et Solaris, l'installation
de VirtualBox fournit un client VRDP convenable appelé
<computeroutput>rdesktop-vrdp</computeroutput>. Les versions récentes de
<computeroutput>uttsc</computeroutput>, un client taillé pour être utilisé
avec des clients Sun Ray thin et qui supporte l'accès aux périphériques
USB distants. Les clients RDP pour d'autres plateformes seront fournis dans de
futures versions de VirtualBox.</para>
<para>Pour rendre disponible un périphérique USB distant pour une VM, vous
devriez démarrer <computeroutput>rdesktop-vrdp</computeroutput> comme
suit :<screen>rdesktop-vrdp -r usb -a 16 -N my.host.address</screen>
Merci de vous reporter au <xref linkend="ts_usb-linux" /> pour des
détails supplémentaires sur la manière de régler correctement les droits
des périphériques USB. De plus, il est conseillé de désactiver le chargement automatique d'un pilote
de l'hôte, depuis l'hôte distant qui serait lu sur des périphériques
USB, pour vous assurer que les périphériques seront accessibles au client
RDP. Si vous avez bien fait le paramétrage sur l'hôte distant, les
événements de branchement/débranchement sont visibles dans le fichier
VBox.log de la VM.</para>
</sect2>
<sect2 id="vbox-auth">
<title>Authentification RDP</title>
<para>Pour chaque machine virtuelle accessible à distance via RDP, vous
pouvez déterminer individuellement si les connexions du client sont
authentifiées et comment. Pour cela, utilisez la commande
<computeroutput>VBoxManage modifyvm</computeroutput> avec l'option
<computeroutput>--vrdeauthtype</computeroutput>&#xA0;; voir <xref
linkend="vboxmanage-modifyvm" /> pour une présentation générale. Trois
méthodes d'authentification sont disponibles&#xA0;:<itemizedlist>
<listitem>
<para>La méthode "null" signifie qu'il n'y a pas d'authentification
du tout&#xA0;; n'importe quel client peut se connecter au serveur
VRDP et, ainsi, à la machine virtuelle. C'est, bien sûr, très peu
sécurisé et cela ne doit être recommandé que sur des réseaux privés.</para>
</listitem>
<listitem>
<para>La méthode "external" fournit une authentification externe via
une bibliothèque d'authentification spéciale. VirtualBox inclut
deux bibliothèques d'authentification&#xA0;:<orderedlist>
<listitem>
<para>La bibliothèque d'authentification par défaut,
<computeroutput>VBoxAuth</computeroutput>, authentifie en fonction
des droits de l'utilisateur sur l'hôte. Selon la plateforme hôte,
cela signifie&#xA0;:<itemizedlist>
<listitem>
<para>Sur les hôtes Linux,
<computeroutput>VBoxAuth.so</computeroutput>
authentifie les utilisateurs à partir du système PAM de
l'hôte.</para>
</listitem>
<listitem>
<para>Sur les hôtes Windows,
<computeroutput>VBoxAuth.dll</computeroutput>
authentifie les utilisateurs à partir du système WinLogon
de l'hôte.</para>
</listitem>
<listitem>
<para>Sur les hôtes Mac OS X,
<computeroutput>VBoxAuth.dylib</computeroutput>
authentifie les utilisateurs à partir du service répertoire
de l'hôte.<footnote>
<para>Le support pour Mac OS X a été ajouté dans
la version
3.2.</para>
</footnote></para>
</listitem>
</itemizedlist></para>
<para>En d'autres termes, la méthode "external" par défaut
réalise l'authentification par les comptes utilisateurs existant
sur le système hôte. Tout utilisateur ayant des autorisations
d'authentification valides est accepté, c'est-à-dire que le nom
d'utilisateur n'a pas besoin de correspondre à l'utilisateur
qui lance la VM.</para>
</listitem>
<listitem>
<para>Une bibliothèque supplémentaire qui s'appelle
<computeroutput>VBoxAuthSimple</computeroutput> réalise
l'authentification à partir des autorisations configurées
dans la section "extradata" du fichier XML des paramètres d'une machine
virtuelle. C'est probablement la méthode la plus simple pour
s'authentifier, qui ne dépend pas d'un invité en fonction et
supporté (voir ci-dessous). Les étapes suivantes sont
nécessaires&#xA0;:<orderedlist>
<listitem>
<para>Activer
<computeroutput>VBoxAuthSimple</computeroutput> avec la
commande suivante&#xA0;:</para>
<para><screen>VBoxManage setproperty vrdeauthlibrary "VBoxAuthSimple"</screen></para>
</listitem>
<listitem>
<para>Pour activer la bibliothèque pour une VM en particulier,
vous devez passer en authentification externe&#xA0;:<screen>VBoxManage modifyvm "nom VM" --vrdeauthtype external</screen></para>
<para>Remplacez
<computeroutput>"nom VM"</computeroutput> par le nom
ou l'UUID de la VM.</para>
</listitem>
<listitem>
<para>Vous devrez alors configurer les utilisateurs et
les mots de passe en écrivant ces éléments dans les
extradata de la machine. Comme le fichier XML des paramètres
de la machine, dans lequel il faut écrire le mot de
passe à la section "extradata", est un fichier en texte
brut, VirtualBox utilise le hachage pour chiffrer les
mots de passe. Il faut utiliser la commande suivante&#xA0;:<screen>VBoxManage setextradata "nom VM" "VBoxAuthSimple/users/&lt;utilisateur&gt;" &lt;hash&gt;</screen></para>
<para>Remplacez
<computeroutput>&lt;vm&gt;</computeroutput> par le nom
ou l'UUID de la VM,
<computeroutput>&lt;utilisateur&gt;</computeroutput> par
le nom d'utilisateur qui devrait être autorisé à se connecter
et
<computeroutput>&lt;hash&gt;</computeroutput> par le mot
de passe chiffré. Par exemple, pour avoir la valeur
hachée du mot de passe "secret", vous pouvez utiliser la
commande suivante&#xA0;:<screen>VBoxManage internalcommands passwordhash "secret"</screen></para>
<para>Ceci affichera
<screen>2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b</screen>
Vous pouvez alors utiliser VBoxManage setextradata pour
stocker cette valeur dans la section "extradata" de la
machine.</para>
<para>Un exemple des deux ensemble, pour définir le mot
de passe de l'utilisateur "john" sur la machine "Ma VM"
en "secret", utilisez cette commande&#xA0;:<screen>VBoxManage setextradata "Ma VM" "VBoxAuthSimple/users/john"
2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b</screen></para>
</listitem>
</orderedlist></para>
</listitem>
</orderedlist></para>
</listitem>
<listitem>
<para>Enfin, la méthode d'authentification "guest" réalise
l'authentification par un composant spécial fourni avec les suppléments
invité&#xA0;; il s'en suit que l'authentification ne s'effectue pas
sur l'hôte mais via les comptes utilisateurs
<emphasis>de l'invité</emphasis>.</para>
<para>Cette méthode est actuellement en test et pas encore
supportée.</para>
</listitem>
</itemizedlist></para>
<para>Outre les méthodes décrites ci-dessus, vous pouvez remplacer la méthode
d'authentification "external" par défaut par n'importe quel autre module.
Pour cela, VirtualBox offre une interface claire qui vous permet d'écrire
votre propre module d'authentification. Ceci est décrit en détails dans
le manuel de référence du Kit de développement logiciel de VirtualBox&#xA0;;
merci de voir <xref
linkend="VirtualBoxAPI" /> pour des détails.</para>
</sect2>
<sect2 id="vrde-crypt">
<title>Chiffrement RDP</title>
<para>Le chiffrement du flux de données des fonctions RDP se base sur le
chiffrage symétrique RC4 (avec des clés jusqu'à 128bit). Les clés RC4
sont remplacées à intervalles réguliers (tous les 4096 paquets).</para>
<para>RDP fournit différentes méthodes d'authentification&#xA0;:<orderedlist>
<listitem>
<para>Historiquement, on utilisait l'authentification RDP4, avec
laquelle le client RDP ne réalise aucun contrôle pour vérifier
l'identité du serveur auquel il se connecte. Comme on peut obtenir les
autorisations de l'utilisateur en utilisant une attaque "man in the
middle" (MITM) (personne initiée), l'authentification RDP4 n'est pas
sécurisée et vous ne devriez en général pas l'utiliser.</para>
</listitem>
<listitem>
<para>L'authentification RDP5.1 utilise un certificat serveur pour
lequel le client possède la clé publique. De cette façon, vous avez la
garantie que le serveur possède la clé privée correspondante. Cependant,
comme cette clé privée codée en dur a été publiée il y a quelques
années, l'authentification RDP5.1 n'est pas sécurisée.</para>
</listitem>
<listitem>
<para>L'authentification RDP5.2 utilise la sécurité RDP améliorée,
ce qui veut dire qu'un protocole de sécurité externe est utilisé pour
sécuriser la connexion. RDP4 et RDP5.1 utilisent la sécurité RDP
Standard. Le serveur VRDP supporte la sécurité renforcée RDP avec
le protocole TLS et, faisant partie du handshake TLS, il envoie
le certificat du serveur au client.</para>
<para>La propriété VRDE <computeroutput>Security/Method</computeroutput>
définit la méthode de sécurité souhaitée qui est utilisée pour une
connexion. Les valeurs valides sont&#xA0;:<itemizedlist>
<listitem>
<para>
<computeroutput>Negotiate</computeroutput> - les connexions
sécurisées améliorées (TLS) et RDP standards sont autorisées.
La méthode de sécurité se négocie avec le client. C'est le réglage
par défaut.
</para>
</listitem>
<listitem>
<para>
<computeroutput>RDP</computeroutput> - seule la sécurité QDP
Standard est acceptée.</para>
</listitem>
<listitem>
<para>
<computeroutput>TLS</computeroutput> - seule la sécurité RDP
améliorée est acceptée. Le client doit supporter TLS.</para>
</listitem>
</itemizedlist>
Par exemple la commande suivante autorise un client à utiliser une
connexion sécurisée soit par RDP Standard, soit par RDP améliorée&#xA0;:
<screen>vboxmanage modifyvm "nom VM" --vrdeproperty "Security/Method=negotiate"</screen>
</para>
<para>Si la propriété <computeroutput>Security/Method</computeroutput>
est réglée sur <computeroutput>Negotiate</computeroutput> ou
<computeroutput>TLS</computeroutput>, le protocole TLS sera automatiquement
utilisé par le serveur si le client supporte TLS. Cependant, pour
utiliser TLS, le serveur doit posséder le certificat du serveur, la
clé privée du serveur et l'autorité du certificat (Certificate
Authority (CA)). L'exemple suivant montre comment générer un
certificat de serveur.<orderedlist>
<listitem>
Créez un certificat CA auto-signé&#xA0;:
<screen>openssl req -new -x509 -days 365 -extensions v3_ca \
-keyout ca_key_private.pem -out ca_cert.pem</screen>
</listitem>
<listitem>
Générez une clé privée du serveur et une demande de signature&#xA0;:
<screen>openssl genrsa -out server_key_private.pem
openssl req -new -key server_key_private.pem -out server_req.pem</screen>
</listitem>
<listitem>
Générez le certificat du serveur&#xA0;:
<screen>openssl x509 -req -days 365 -in server_req.pem \
-CA ca_cert.pem -CAkey ca_key_private.pem -set_serial 01 -out server_cert.pem</screen>
</listitem>
</orderedlist>
Le serveur doit être configuré pour accéder aux fichiers requis&#xA0;:
<screen>vboxmanage modifyvm "nom VM" \
--vrdeproperty "Security/CACertificate=path/ca_cert.pem"</screen>
<screen>vboxmanage modifyvm "nom VM" \
--vrdeproperty "Security/ServerCertificate=path/server_cert.pem"</screen>
<screen>vboxmanage modifyvm "nom VM" \
--vrdeproperty "Security/ServerPrivateKey=path/server_key_private.pem"</screen>
</para>
</listitem>
</orderedlist></para>
<para>Comme le client qui se connecte au serveur détermine le type de chiffrement
qui sera utilisé, avec rdesktop, le visualiseur RDP de Linux, utilisez
les options <computeroutput>-4</computeroutput> ou
<computeroutput>-5</computeroutput>.</para>
</sect2>
<sect2 id="vrde-multiconnection">
<title>Connexions multiples au serveur VRDP</title>
<para>Le serveur VRDP de VirtualBox supporte plusieurs connexions simultanées
à une VM en fonction à partir de différents clients. Tous les clients
connectés voient la même sortie d'écran et partagent le pointeur de souris
et le focus du clavier. Cela revient à ce que plusieurs personnes utilisent
le même ordinateur en même temps, chacun leur tour devant le clavier.</para>
<para>La commande suivante active le mode connexions multiples&#xA0;: <screen>VBoxManage modifyvm "nom VM" --vrdemulticon on</screen></para>
</sect2>
<sect2 id="vrde-multimonitor">
<title>Avoir plusieurs moniteurs distants</title>
<para>Pour accéder à deux ou plusieurs moniteurs de VM distants, vous
devez activer le mode multiconnexion VRDP (voir la <xref
linkend="vrde-multiconnection" />).</para>
<para>Le client RDP peut sélectionner le numéro du moniteur virtuel auquel
se connecter en utilisant le paramètre d'identification <computeroutput>domain</computeroutput>
(<computeroutput>-d</computeroutput>). Si le paramètre se termine par
<computeroutput>@</computeroutput> suivi d'un numéro, VirtualBox
interprète ce numéro comme l'index des écrans. On sélectionne l'écran invité
primaire avec <computeroutput>@1</computeroutput>, le premier écran secondaire
avec <computeroutput>@2</computeroutput>, etc.</para>
<para>Le client Microsoft RDP6 ne pous permet pas de sécifier un nom de
domaine distinct. Utilisez plutôt
<computeroutput>domaine\nom_utilisateur</computeroutput> dans le champ
<computeroutput>Nom d'utilisateur :</computeroutput> -- par exemple,
<computeroutput>@2\name</computeroutput>.
<computeroutput>nom</computeroutput> doit être renseigné et il doit être
le nom utilisé pour vous identifier si le serveur VRDP est configuré pour
demander une autorisation. Sinon, vous pouvez utiliser n'importe quel texte
comme nom d'utilisateur.</para>
</sect2>
<sect2 id="vrde-videochannel">
<title>Redirection graphique VRDP</title>
<para>À partir de VirtualBox 3.2, le serveur VRDP peut rediriger les flux
graphiques de l'hôte vers le client RDP. Les frames graphiques sont
compressés en utilisant l'algorithme JPEG, ce qui permet un ratio de compression
plus fort que les méthodes de compression bitmap RDP standards. Il est
possible d'augmenter le ratio de compression en diminuant la qualité de l'image.</para>
<para>Le serveur VRDP détecte automatiquement les flux vidéos dans un
invité au fur et à mesure que les zones rectangulaires se mettent à jour
fréquemment. Il s'en suit que cette méthode fonctionne avec n'importe quel
système d'exploitation invité, sans devoir installer de logiciels supplémentaires
dans l'invité&#xA0;; en particulier, les suppléments invité ne sont pas
requis.</para>
<para>Par contre, côté client, seul le client de connexion Connexion bureau
à distance de Windows 7 supporte actuellement cette fonctionnalité. Si un
client ne supporte pas la redirection graphique, le serveur VRDP se rabat
sur le rafraîchissement régulier des bitmap.</para>
<para>La commande suivante active la redirection graphique&#xA0;: <screen>VBoxManage modifyvm "nom VM" --vrdevideochannel on</screen></para>
<para>La qualité de l'image se définit par une valeur entre 10 et 100
pour cent, ce qui représente un niveau de compression JPEG (où les nombres
les plus bas signifient une qualité plus faibles mais une compression plus
forte). Vous pouvez modifier la qualité en utilisant la commande suivante&#xA0;:
<screen>VBoxManage modifyvm "nom VM" --vrdevideochannelquality 75</screen></para>
</sect2>
<sect2 id="vrde-customization">
<title>Personnalisation du VRDP</title>
<para>Avec VirtualBox 4.0, il est possible de désactiver l'affichage,
l'entrée souris et clavier, le son, l'USB distant ou le presse-papier,
de façon individuelle dans le serveur VRDP.</para>
<para>Les commandes suivantes modifient les paramètres correspondant du
serveur&#xA0;:</para>
<screen>VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableDisplay=1
VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableInput=1
VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableUSB=1
VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableAudio=1
VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableClipboard=1
VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableUpstreamAudio=1</screen>
<para>Pour réactiver une fonction, utilisez une commande identique sans
l'argument 1. Par example&#xA0;: <screen>VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableDisplay=</screen></para>
<para>Ces propriétés ont été ajoutées avec VirtualBox 3.2.10. Cependant,
dans la série 3.2.x, il était nécessaire d'utiliser les commandes
suivantes pour modifier les paramètres&#xA0;:</para>
<screen>VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableDisplay" 1
VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableInput" 1
VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableUSB" 1
VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableAudio" 1
VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableClipboard" 1</screen>
<para>Pour réactiver une fonction, utilisez une commande identique
sans l'argument 1. Par exemple&#xA0;: <screen>VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableDisplay"</screen></para>
</sect2>
</sect1>
<sect1 id="teleporting">
<title>Téléportation</title>
<para>À partir de la version 3.1, VirtualBox supporte la "téléportation" --
à savoir qu'il peut déplacer une machine sur un réseau d'un hôte VirtualBox
à l'autre, pendant que la machine est en fonction. Cela fonctionne indépendamment
du système d'exploitation hôte&#xA0;: vous pouvez téléporter des machines
virtuelles entre, par exemple, des hôtes Solaris et Mac.</para>
<para>La téléportation exige qu'une machine soit en fonction sur un
hôte, qu'on appelle alors la <emphasis role="bold">"source"</emphasis>.
L'hôte sur lequel la machine virtuelle sera téléportée s'appellera alors la
<emphasis role="bold">"cible"</emphasis>&#xA0;; la machine sur la cible est
alors configurée pour attendre que la source la contacte.
L'état en fonction de la machine sera transféré de la source à la cible en
un temps nimimum.</para>
<para>La téléportation est possible sur n'importe quel réseau TCP/IP&#xA0;;
la source et la cible n'ont besoin que de s'entendre sur un port TCP/IP
spécifié dans les paramètres de téléportation.</para>
<para>Cependant, pour l'instant, il y a quelques prérequis pour que cela
fonctionne&#xA0;:<orderedlist>
<listitem>
<para>Sur l'hôte cible, vous devez configurer une machine virtuelle dans
VirtualBox avec exactement les mêmes paramètres matériels que la machine
sur la source que vous voulez téléporter. Cela ne s'applique pas aux
paramètres purement descriptifs tels que le nom de la VM, mais bien sûr,
pour que la téléportation fonctionne, la machine cible doit avoir la
même quantité de mémoire et les autres paramètres matériels. Sans cela,
la téléportation échouera avec un message d'erreur.</para>
</listitem>
<listitem>
<para>Les deux machines virtuelles sur la source et la cible doivent
partager le même stockage (images de disques durs et de lecteur amovible
et CD/DVD). Cel signifie qu'elles utilisent soit la même cible iSCSI,
soit le stockage se trouve quelque part sur le réseau et les deux hôtes
y ont accès via NFS ou SMB/CIFS.</para>
<para>Cela veut dire aussi que ni la machine source ni la machine
cible ne peuvent avoir d'instantanés.</para>
</listitem>
</orderedlist></para>
<para>Puis, suivez les étapes suivantes&#xA0;:<orderedlist>
<listitem>
<para>Sur l'hôte <emphasis>cible</emphasis>, configurez la machine
virtuelle pour attendre qu'une demande de téléportation arrive quand
elle sera démarrée, plutôt que d'essayer de démarrer réellement la machine.
Cela se fait avec la commande VBoxManage suivante&#xA0;:<screen>VBoxManage modifyvm &lt;nomvmcible&gt; --teleporter on --teleporterport &lt;port&gt;</screen></para>
<para>où <computeroutput>&lt;nomvmcible&gt;</computeroutput> est le
nom de la machine virtuelle de l'hôte cible et
<computeroutput>&lt;port&gt;</computeroutput> est un numéro de port
TCP/IP à utiliser sur les hôtes source et cible. Par
exemple, utilisez le 6000. Pour les détails, voir <xref
linkend="vboxmanage-modifyvm-teleport" />.</para>
</listitem>
<listitem>
<para>Démarrez la VM sur l'hôte cible. Vous verrez qu'au lieu de démarrer,
elle affichera une boîte de dialogue de progression indiquant qu'elle
attend une demande de téléportation.</para>
</listitem>
<listitem>
<para>Démarrez la machine sur l'hôte <emphasis>source</emphasis> comme
d'habitude. Quand elle est en fonction et quand vous voulez la téléporter, lancez
la commande suivante sur l'hôte source&#xA0;:<screen>VBoxManage controlvm &lt;nomvmsource&gt; teleport --host &lt;hôtecible&gt; --port &lt;port&gt;</screen></para>
<para>où <computeroutput>&lt;nomvmsource&gt;</computeroutput> est le
nom de la machine (irtuelle sur l'hôte source (la machine actuellement en
fonction) et <computeroutput>&lt;hôtecible&gt;</computeroutput> est
le nom ou l'IP de l'hôte cible où une demande de téléportation par la
machine est attendue, et <computeroutput>&lt;port&gt;</computeroutput>
doit être le même numéro que celui spécifié dans la commande sur l'hôte
cible. Pour les détails, voir <xref
linkend="vboxmanage-controlvm" />.</para>
</listitem>
</orderedlist></para>
<para>Pour tester, vous pouvez aussi téléporter des machines sur le même hôte&#xA0;;
dans ce cas, utilisez "localhost" comme nom d'hôte sur l'hôte source et
cible.<note>
<para>Dans de rares cas, si les processeurs de la source et de la cible
sont très différents, la téléportation peut échouer avec un message d'erreur
ou la cible peut planter. Cela peut arriver surtout si la VM exécute des
logiciels très optimisés pour fonctionner sur un processeur particulier
sans vérifier correctement que certaines fonctions du processeur sont
bien présentes. VirtualBox filtre les capacités du processeur présenté
au système d'exploitation invité. Les utilisateurs avancés peuvent essayer de
restreindre les possibilités de ces processeurs virtuels avec la commande
<computeroutput>VBoxManage --modifyvm
--cpuid</computeroutput>&#xA0;; voir <xref
linkend="vboxmanage-modifyvm-teleport" />.</para>
</note></para>
</sect1>
</chapter>