Accéder à vos VMWare via VNC

Pour ceux qui n’utiliseraient pas encore Oracle VM ou Virtualbox à la place de VMWare ;), il est souvent nécessaire de pouvoir accéder à ses environnements virtualisés à distance. A cet effet, VMWare propose la console « VMWare Infrastructure Web Access » qui fournit un accès direct aux VM hébergées dans une infra.
Cette console de Management vous propose de vous connecter à vos différentes VM par le biais d’un plugin à installer sur votre poste, dénommé « VMWare Remote Console Plugin ». Pratique, car intégré au navigateur, ou en shortcut sur votre bureau, cet outil présente cependant quelques inconvénients. A commencer par le premier : sa lenteur. Le protocole n’est pas du tout optimisé et la réactivité s’en ressent fortement : échos des commandes lent, clic de souris peu réactif, et ainsi de suite.
Il en ressort un confort d’utilisation très moyen, et qui finalement doit se limiter à quelques tâches d’administration ponctuelles. Par ailleurs les adeptes de Ubuntu et autres distrib linux user-friendly ne peuvent profiter de ce plugin.
Cependant, VMWare a pensé à tout ;), notamment en embarquant un VNC Server dans ses VM. Peu et mal documenté, notamment pour nous autres français,
cette fonctionnalité va vous permettre d’accéder à vos VM Windows notamment tout en profitant de la rapidité de VNC.
Voici donc la procédure à suivre pour activer cette fonctionnalité (valable pour des environnements hébergés sous Linux, mais la chose est applicable
sous windows). Vous devez en premier lieu :

  • Arrêter votre VM
  • Modifier ensuite le fichier de configuration .vmx en ajoutant les lignes suivantes :
RemoteDisplay.vnc.enabled = TRUE
RemoteDisplay.vnc.port = 5901
RemoteDisplay.vnc.password = "votrepassword99"
RemoteDisplay.vnc.keyMap = "fr"
  • Grâce à ces lignes vous allez d’une part activer le VNC au démarrage de la VM, mais également configuré son port d’écoute et le mot de passe associé.
  • La dernière option consiste à activer la clavier français (qui est par défaut US).

C’est là que réside la subtilité : les fichiers de mapping du clavier français ne sont pas installés par défaut. Il vous faut les récupérer à partir d’une VM Workstation et les copier vers le répertoire idoïne, à savoir /usr/lib/vmware/vnckeymap sous linux, ou C:Documents and SettingsAll UsersApplication DataVMwarevnckeymap pour Windows.
A partir de là vous pouvez démarrer votre VM. L’activation du VNC est transparente.
Il ne vous reste plus qu’à installer votre client VNC préféré (VNC Viewer, TightVNC (recommandé) sous windows par exemple) et vous connecter à votre VM.
Pour cela, attaquez l’adresse IP (ou hostname) de votre serveur hébergeant vos VM, en indiquant le port d’écoute VNC que vous avez associé (5901, ou :1).


Saisissez ensuite le mot de passe (pas de nom de user). Vous arrivez directement sur l’ouverture de session Windows. Autre avantage de cette solution, c’est que l’adresse de connexion VNC ne bouge pas si votre VM change d’IP : c’est le cas si vous démarrez des sessions VPN par exemple dans votre VM : avec un protocole RDP de connexion à la VM, vous seriez déconnecté. En VNC, c’est le serveur physique de VM qui fournit le serveur VNC, avec un couple IP:PORT qui est indépendant le l’IP de la VM.
Seule limitation de cette fonctionnalité, c’est que vous devez affecter un port VNC différent à chacune de vos VM.
Dernière info, voici le contenu du fichier keymap français. Copiez/Coller le contenu ci-après dans un fichier nommé « fr » et descendez dans le répertoire qui va bien (Cf plus haut).
fichier keymap :

0x0020 = 0x0039 # XK_space
0x0021 = 0x0035 # XK_exclam
0x0022 = 0x0004 # XK_quotedbl
0x0023 = 0x0204 # XK_numbersign
0x0024 = 0x001b # XK_dollar
0x0025 = 0x0028 # XK_percent
0x0026 = 0x0002 # XK_ampersand
0x0027 = 0x0005 # XK_apostrophe
0x0028 = 0x0006 # XK_parenleft
0x0029 = 0x000c # XK_parenright
0x002a = 0x002b # XK_asterisk
0x002b = 0x000d # XK_plus
0x002c = 0x0032 # XK_comma
0x002d = 0x0007 # XK_minus
0x002e = 0x0033 # XK_period
0x002f = 0x0034 # XK_slash
0x0030 = 0x000b # XK_0
0x0031 = 0x0002 # XK_1
0x0032 = 0x0003 # XK_2
0x0033 = 0x0004 # XK_3
0x0034 = 0x0005 # XK_4
0x0035 = 0x0006 # XK_5
0x0036 = 0x0007 # XK_6
0x0037 = 0x0008 # XK_7
0x0038 = 0x0009 # XK_8
0x0039 = 0x000a # XK_9
0x003a = 0x0034 # XK_colon
0x003b = 0x0033 # XK_semicolon
0x003c = 0x0056 # XK_less
0x003d = 0x000d # XK_equal
0x003e = 0x0056 # XK_greater
0x003f = 0x0032 # XK_question
0x0040 = 0x020b # XK_at
0x0041 = 0x0010 # XK_A
0x0042 = 0x0030 # XK_B
0x0043 = 0x002e # XK_C
0x0044 = 0x0020 # XK_D
0x0045 = 0x0012 # XK_E
0x0046 = 0x0021 # XK_F
0x0047 = 0x0022 # XK_G
0x0048 = 0x0023 # XK_H
0x0049 = 0x0017 # XK_I
0x004a = 0x0024 # XK_J
0x004b = 0x0025 # XK_K
0x004c = 0x0026 # XK_L
0x004d = 0x0027 # XK_M
0x004e = 0x0031 # XK_N
0x004f = 0x0018 # XK_O
0x0050 = 0x0019 # XK_P
0x0051 = 0x001e # XK_Q
0x0052 = 0x0013 # XK_R
0x0053 = 0x001f # XK_S
0x0054 = 0x0014 # XK_T
0x0055 = 0x0016 # XK_U
0x0056 = 0x002f # XK_V
0x0057 = 0x002c # XK_W
0x0058 = 0x002d # XK_X
0x0059 = 0x0015 # XK_Y
0x005a = 0x0011 # XK_Z
0x005b = 0x0206 # XK_bracketleft
0x005c = 0x0209 # XK_backslash
0x005d = 0x020c # XK_bracketright
0x005e = 0x020a # XK_asciicircum
0x005f = 0x0009 # XK_underscore
0x0060 = 0x0208 # XK_grave
0x0061 = 0x0010 # XK_a
0x0062 = 0x0030 # XK_b
0x0063 = 0x002e # XK_c
0x0064 = 0x0020 # XK_d
0x0065 = 0x0012 # XK_e
0x0066 = 0x0021 # XK_f
0x0067 = 0x0022 # XK_g
0x0068 = 0x0023 # XK_h
0x0069 = 0x0017 # XK_i
0x006a = 0x0024 # XK_j
0x006b = 0x0025 # XK_k
0x006c = 0x0026 # XK_l
0x006d = 0x0027 # XK_m
0x006e = 0x0031 # XK_n
0x006f = 0x0018 # XK_o
0x0070 = 0x0019 # XK_p
0x0071 = 0x001e # XK_q
0x0072 = 0x0013 # XK_r
0x0073 = 0x001f # XK_s
0x0074 = 0x0014 # XK_t
0x0075 = 0x0016 # XK_u
0x0076 = 0x002f # XK_v
0x0077 = 0x002c # XK_w
0x0078 = 0x002d # XK_x
0x0079 = 0x0015 # XK_y
0x007a = 0x0011 # XK_z
0x007b = 0x0205 # XK_braceleft
0x007c = 0x0207 # XK_bar
0x007d = 0x020d # XK_braceright
0x007e = 0x0203 # XK_asciitilde
0x00a1 = 0x0002 # XK_exclamdown
0x00a2 = 0x002e # XK_cent
0x00a3 = 0x001b # XK_sterling
0x00a4 = 0x021b # XK_currency
0x00a5 = 0x0015 # XK_yen
0x00a6 = 0x0056 # XK_brokenbar
0x00a7 = 0x0035 # XK_section
0x00a9 = 0x002e # XK_copyright
0x00aa = 0x0021 # XK_ordfeminine
0x00ab = 0x0211 # XK_guillemotleft
0x00ac = 0x0229 # XK_notsign
0x00ae = 0x0013 # XK_registered
0x00b0 = 0x000c # XK_degree
0x00b1 = 0x000a # XK_plusminus
0x00b2 = 0x0029 # XK_twosuperior
0x00b5 = 0x002b # XK_mu
0x00b6 = 0x0013 # XK_paragraph
0x00b7 = 0x0034 # XK_periodcentered
0x00b9 = 0x0202 # XK_onesuperior
0x00ba = 0x0027 # XK_masculine
0x00bb = 0x002d # XK_guillemotright
0x00bf = 0x000c # XK_questiondown
0x00c6 = 0x0010 # XK_AE
0x00d0 = 0x0020 # XK_ETH
0x00d7 = 0x0033 # XK_multiply
0x00d8 = 0x0018 # XK_Ooblique
0x00de = 0x0019 # XK_THORN
0x00df = 0x001f # XK_ssharp
0x00e0 = 0x000b # XK_agrave
0x00e6 = 0x0010 # XK_ae
0x00e7 = 0x000a # XK_ccedilla
0x00e8 = 0x0008 # XK_egrave
0x00e9 = 0x0003 # XK_eacute
0x00f0 = 0x0020 # XK_eth
0x00f7 = 0x0034 # XK_division
0x00f8 = 0x0018 # XK_oslash
0x00f9 = 0x0028 # XK_ugrave
0x00fe = 0x0019 # XK_thorn
0x01a3 = 0x0026 # XK_Lstroke
0x01b3 = 0x0026 # XK_lstroke
0x01f0 = 0x0021 # XK_dstroke
0x02a1 = 0x0023 # XK_Hstroke
0x02b1 = 0x0023 # XK_hstroke
0x02b9 = 0x0017 # XK_idotless
0x03a2 = 0x0025 # XK_kra
0x03ac = 0x0014 # XK_Tslash
0x03bc = 0x0014 # XK_tslash
0x03bd = 0x0022 # XK_ENG
0x03bf = 0x0022 # XK_eng
0x07d9 = 0x001e # XK_Greek_OMEGA
0x08a3 = 0x0033 # XK_horizconnector
0x08fb = 0x0015 # XK_leftarrow
0x08fc = 0x0016 # XK_uparrow
0x08fd = 0x0017 # XK_rightarrow
0x08fe = 0x0016 # XK_downarrow
0x0ac3 = 0x0003 # XK_oneeighth
0x0ac4 = 0x0006 # XK_threeeighths
0x0ac5 = 0x0007 # XK_fiveeighths
0x0ac6 = 0x0008 # XK_seveneighths
0x0ac9 = 0x0009 # XK_trademark
0x0ad2 = 0x002f # XK_leftdoublequotemark
0x0ad3 = 0x0030 # XK_rightdoublequotemark
0x20ac = 0x0012 # XK_EuroSign
0xfe03 = 0x0138 # XK_ISO_Level3_Shift
0xfe20 = 0x000f # XK_ISO_Left_Tab
0xfe50 = 0x002b # XK_dead_grave
0xfe51 = 0x0032 # XK_dead_acute
0xfe52 = 0x001a # XK_dead_circumflex
0xfe54 = 0x001b # XK_dead_macron
0xfe55 = 0x002b # XK_dead_breve
0xfe56 = 0x0035 # XK_dead_abovedot
0xfe57 = 0x001a # XK_dead_diaeresis
0xfe58 = 0x001a # XK_dead_abovering
0xfe59 = 0x0032 # XK_dead_doubleacute
0xfe5a = 0x0028 # XK_dead_caron
0xfe5c = 0x000d # XK_dead_ogonek
0xfe60 = 0x0035 # XK_dead_belowdot
0xff08 = 0x000e # XK_BackSpace
0xff09 = 0x000f # XK_Tab
0xff0d = 0x001c # XK_Return
0xff13 = 0x0100 # XK_Pause
0xff14 = 0x0046 # XK_Scroll_Lock
0xff15 = 0x0054 # XK_Sys_Req
0xff1b = 0x0001 # XK_Escape
0xff20 = 0x011d # XK_Multi_key
0xff50 = 0x0147 # XK_Home
0xff51 = 0x014b # XK_Left
0xff52 = 0x0148 # XK_Up
0xff53 = 0x014d # XK_Right
0xff54 = 0x0150 # XK_Down
0xff55 = 0x0149 # XK_Prior
0xff56 = 0x0151 # XK_Next
0xff57 = 0x014f # XK_End
0xff61 = 0x0137 # XK_Print
0xff62 = 0x00b7 # XK_Execute
0xff63 = 0x0152 # XK_Insert
0xff67 = 0x015d # XK_Menu
0xff6b = 0x0100 # XK_Break
0xff73 = 0x0138 # XK_Mode_switch
0xff7f = 0x0045 # XK_Num_Lock
0xff8d = 0x011c # XK_KP_Enter
0xff95 = 0x0047 # XK_KP_Home
0xff96 = 0x004b # XK_KP_Left
0xff97 = 0x0048 # XK_KP_Up
0xff98 = 0x004d # XK_KP_Right
0xff99 = 0x0050 # XK_KP_Down
0xff9a = 0x0049 # XK_KP_Prior
0xff9b = 0x0051 # XK_KP_Next
0xff9c = 0x004f # XK_KP_End
0xff9d = 0x004c # XK_KP_Begin
0xff9e = 0x0052 # XK_KP_Insert
0xff9f = 0x0053 # XK_KP_Delete
0xffaa = 0x0037 # XK_KP_Multiply
0xffab = 0x004e # XK_KP_Add
0xffac = 0x0053 # XK_KP_Separator
0xffad = 0x004a # XK_KP_Subtract
0xffae = 0x0053 # XK_KP_Decimal
0xffaf = 0x0135 # XK_KP_Divide
0xffb0 = 0x0052 # XK_KP_0
0xffb1 = 0x004f # XK_KP_1
0xffb2 = 0x0050 # XK_KP_2
0xffb3 = 0x0051 # XK_KP_3
0xffb4 = 0x004b # XK_KP_4
0xffb5 = 0x004c # XK_KP_5
0xffb6 = 0x004d # XK_KP_6
0xffb7 = 0x0047 # XK_KP_7
0xffb8 = 0x0048 # XK_KP_8
0xffb9 = 0x0049 # XK_KP_9
0xffbe = 0x003b # XK_F1
0xffbf = 0x003c # XK_F2
0xffc0 = 0x003d # XK_F3
0xffc1 = 0x003e # XK_F4
0xffc2 = 0x003f # XK_F5
0xffc3 = 0x0040 # XK_F6
0xffc4 = 0x0041 # XK_F7
0xffc5 = 0x0042 # XK_F8
0xffc6 = 0x0043 # XK_F9
0xffc7 = 0x0044 # XK_F10
0xffc8 = 0x0057 # XK_F11
0xffc9 = 0x0058 # XK_F12
0xffd2 = 0x015b # XK_F21
0xffd3 = 0x015c # XK_F22
0xffe1 = 0x002a # XK_Shift_L
0xffe2 = 0x0036 # XK_Shift_R
0xffe3 = 0x001d # XK_Control_L
0xffe4 = 0x011d # XK_Control_R
0xffe5 = 0x003a # XK_Caps_Lock
0xffe7 = 0x0038 # XK_Meta_L
0xffe8 = 0x0138 # XK_Meta_R
0xffe9 = 0x0038 # XK_Alt_L
0xffea = 0x0138 # XK_Alt_R
0xffeb = 0x015b # XK_Super_L
0xffec = 0x015c # XK_Super_R
0xffee = 0x015d # XK_Hyper_R
0xffff = 0x0153 # XK_Delete

2 réflexions sur “Accéder à vos VMWare via VNC”

  1. J’ai jamais réussi à faire passer de l’azerty. Que ce soit avec un fichier spécifique, ou avec le fr101 et fr104 d’origine.
    Quel version utilisez-vous?

Les commentaires sont fermés.