Skip to main content

PMAD – Diagnostiquer une prise en main à distance VNC/RDP qui ne fonctionne pas

S'applique à : Medulla / Serveur Medulla / Serveur relais
Version : Toutes
Environnement : SaaS Public / SaaS Privé / On-Premise
Catégorie : PMAD / Diagnostic

Cette procédure permet de diagnostiquer un problème de prise en main à distance (PMAD) lorsqu'une connexion VNC ou RDP ne fonctionne pas depuis Medulla.

Le diagnostic doit être effectué progressivement afin de déterminer à quel niveau se situe le problème :

  • état de la machine et de l'agent Medulla ;
  • disponibilité du protocole de prise en main à distance ;
  • enregistrement de la connexion Guacamole ;
  • configuration de la connexion Guacamole ;
  • établissement du reverse SSH ;
  • communication entre guacd et le tunnel ;
  • configuration HTTP / Guacamole.

Conseil :
Commencez toujours par les vérifications simples présentées au début de cette procédure avant d'effectuer les contrôles SQL ou les diagnostics du reverse SSH.


1. Vérifier que la machine est en ligne dans Medulla

La prise en main à distance n'est pas disponible lorsque la machine apparaît hors ligne dans Medulla.

Si l'ordinateur apparaît grisé ou hors ligne, commencez par vérifier le fonctionnement de l'agent Medulla sur la machine.

Important :
Il est inutile de poursuivre le diagnostic de la PMAD tant que la machine n'est pas correctement connectée à Medulla.


2. Vérifier le protocole de prise en main à distance

Si la machine est en ligne, vérifiez que le protocole utilisé pour la prise en main à distance est correctement disponible sur le poste.

Connexion VNC

Pour une connexion VNC, vérifiez notamment que TightVNC est correctement lancé sur la machine.

Sous Windows, vous pouvez vérifier si le port VNC est en écoute avec :

netstat -an | find "5900"

Si aucune ligne n'est retournée, vérifiez l'état et l'exécution de TightVNC.

Connexion RDP

Pour une connexion RDP, vérifiez que le Bureau à distance Windows est activé sur la machine.

Vous pouvez également vérifier que le service RDP est en écoute sur le poste.

Connexion SSH

Lorsqu'une connexion SSH est utilisée, vérifiez que le serveur OpenSSH est installé, activé et démarré sur la machine.


3. Workflow de la prise en main à distance

Le schéma suivant présente le workflow utilisé pour l'établissement d'une connexion de prise en main à distance :

Workflow Remote Desktop


4. Logs à consulter

En cas de problème persistant, plusieurs journaux peuvent être utilisés pour identifier à quel niveau la connexion échoue.

Serveur Medulla / relais

/var/log/apache2/*.log
/var/log/mmc/mmc-agent.log
/var/log/pulse/xmpp-agent-relay.log
/var/log/mmc/master-mast.log
/var/log/tomcat9/*.log
/var/log/tomcat9/*.txt

Machine Windows

C:\Program Files\Medulla\var\log\xmpp-agent-machine.log

Guacamole

Pour suivre en temps réel les journaux du service guacd :

journalctl -u guacd -f

Pour afficher les derniers événements :

journalctl -u guacd -n 100

5. Vérifier les connexions Guacamole enregistrées pour la machine

Si la machine est en ligne et que le protocole de prise en main à distance fonctionne, vérifiez que les connexions Guacamole ont correctement été enregistrées dans Medulla.

Sur la base xmppmaster, exécutez :

USE xmppmaster;

SELECT jid,
       hostname,
       machine_id,
       idguacamole,
       protocol
FROM machines
JOIN has_guacamole
    ON machines.id = has_guacamole.machine_id
WHERE jid LIKE '%nom_machine%';

Exemple de résultat :

+-------------------------------------------+-------------+------------+-------------+----------+
| jid                                       | hostname    | machine_id | idguacamole | protocol |
+-------------------------------------------+-------------+------------+-------------+----------+
| nom_machine.7wg@server-ars01/bc241109f61e | nom_machine |         23 |         386 | SSH      |
| nom_machine.7wg@server-ars01/bc241109f61e | nom_machine |         23 |         387 | VNC      |
| nom_machine.7wg@server-ars01/bc241109f61e | nom_machine |         23 |         388 | RDP      |
+-------------------------------------------+-------------+------------+-------------+----------+

Vérifiez que la connexion correspondant au protocole que vous souhaitez utiliser est présente.

Par exemple, pour une PMAD VNC, une ligne avec le protocole VNC doit être présente.

Si aucune connexion n'est présente :
Relancez un enregistrement de la machine. Si les connexions ne sont toujours pas créées après le réenregistrement, vérifiez sur la machine cliente que les protocoles concernés sont correctement activés : VNC lancé, RDP activé ou démon OpenSSH démarré.


6. Vérifier le détail de la connexion Guacamole

Une fois l'idguacamole identifié, il est possible de contrôler la configuration de la connexion correspondante.

Architecture avec serveur relais :
Si la machine est connectée à un serveur relais Medulla, cette requête doit être exécutée sur le relais auquel la machine est connectée.

Dans l'exemple précédent, la connexion VNC possède l'identifiant 387.

USE guacamole;

SELECT guacamole_connection.protocol AS protocol,
       guacamole_connection.connection_id AS connection_id,
       parameter_name,
       parameter_value
FROM guacamole_connection_parameter
JOIN guacamole_connection
    ON guacamole_connection_parameter.connection_id = guacamole_connection.connection_id
WHERE guacamole_connection.connection_id = 387;

Remplacez 387 par l'idguacamole correspondant à la connexion que vous souhaitez diagnostiquer.

Exemple de résultat pour une connexion VNC :

+----------+---------------+----------------+-----------------+
| protocol | connection_id | parameter_name | parameter_value |
+----------+---------------+----------------+-----------------+
| vnc      |           387 | color-depth    | 24              |
| vnc      |           387 | hostname       | localhost       |
| vnc      |           387 | password       | xxxxxxxx        |
| vnc      |           387 | port           | 60381           |
+----------+---------------+----------------+-----------------+

Dans cet exemple, Guacamole doit se connecter à :

localhost:60381

Le port 60381 correspond au port utilisé localement pour atteindre la machine à travers le reverse SSH.


7. Vérifier l'établissement du reverse SSH

Lorsque la connexion Guacamole utilise :

hostname = localhost

vérifiez que le port indiqué dans la configuration Guacamole correspond bien à un reverse SSH actif sur le serveur ou le relais concerné.

Par exemple, si le port retourné est 60381 :

netstat -vatpn | grep 60381

Exemple de résultat :

tcp   0   0 0.0.0.0:60381   0.0.0.0:*   LISTEN      420161/sshd: revers
tcp6  0   0 :::60381         :::*        LISTEN      420161/sshd: revers
tcp6  0   0 ::1:44178        ::1:60381   ESTABLISHED 420167/guacd
tcp6  0   0 ::1:60381        ::1:44178   ESTABLISHED 420161/sshd: revers

Vous devez notamment retrouver :

  • un processus sshd: revers en écoute sur le port concerné ;
  • lorsqu'une connexion PMAD est en cours, une communication entre guacd et ce port.

Information :
Une redirection du port de guacd vers le tunnel est effectuée lors du montage du reverse. Lors d'une tentative de connexion, vérifiez donc la présence d'une ligne guacd en plus des lignes sshd: revers.

Si aucune ligne sshd: revers n'est présente :
Le problème doit être recherché au niveau du reverse SSH.

Consultez alors la FAQ suivante :

SUPPORT - Reverse SSH - Support


8. Diagnostic complémentaire VNC

Pour une connexion VNC, plusieurs contrôles supplémentaires peuvent être effectués.

Sur la machine cliente

Vérifiez que le serveur VNC est en écoute :

netstat -an | find "5900"

Si ce n'est pas le cas, vérifiez l'exécution de TightVNC.

Vérifiez ensuite la présence d'une connexion SSH :

netstat | find "ssh"

Sur le serveur relais

Vérifiez que le reverse SSH est correctement établi :

netstat -vatpn | grep sshd

Information :
Le reverse SSH utilisé pour la PMAD est établi sur un port dynamique. Le numéro du port peut donc varier d'une connexion à l'autre.


9. Diagnostic complémentaire RDP

Pour une connexion RDP, vérifiez en premier lieu que le Bureau à distance est correctement activé sur le poste Windows.

Vérifiez également :

  • que le service RDP Windows est démarré ;
  • que le poste autorise les connexions Bureau à distance ;
  • que la connexion RDP est présente dans la table has_guacamole ;
  • que la connexion Guacamole possède un port de reverse valide ;
  • que le reverse SSH correspondant est présent sur le serveur ou le relais.

Conseil :
La même méthode que pour VNC peut être utilisée : récupérez l'idguacamole correspondant au protocole RDP, puis contrôlez les paramètres de la connexion et le port du reverse associé.


10. Le reverse fonctionne mais Guacamole ne s'ouvre toujours pas

Si les contrôles précédents sont corrects :

  • la machine est en ligne ;
  • la connexion Guacamole existe ;
  • le protocole est correctement configuré ;
  • le reverse SSH est présent ;
  • guacd communique avec le port du reverse ;

mais que la session Guacamole ne s'ouvre toujours pas depuis l'interface Medulla, vérifiez alors la configuration HTTP utilisée pour autoriser l'accès à Guacamole.

Il faut notamment contrôler le Referer HTTP envoyé par le navigateur et, selon l'architecture, sa transmission par le reverse proxy.

Consultez la FAQ dédiée :

PMAD - Vérifier le Referer HTTP en cas d'échec de connexion Guacamole

Information :
Dans Chrome, les Developer Tools permettent de vérifier la valeur du Referer dans Network > Fetch/XHR > Headers. Une valeur incorrecte ou absente peut empêcher le fonctionnement de la PMAD.


11. Ordre de diagnostic recommandé

En cas de problème de PMAD, effectuez les contrôles dans l'ordre suivant :

  1. Vérifier que la machine apparaît en ligne dans Medulla.
  2. Vérifier le fonctionnement de l'agent Medulla.
  3. Vérifier que VNC, RDP ou SSH est disponible sur la machine.
  4. Vérifier la présence des connexions dans xmppmaster.has_guacamole.
  5. Réenregistrer la machine si les connexions Guacamole sont absentes.
  6. Récupérer l'idguacamole correspondant au protocole concerné.
  7. Vérifier les paramètres de la connexion dans la base guacamole.
  8. Identifier le port dynamique utilisé par le reverse SSH.
  9. Vérifier la présence du processus sshd: revers.
  10. Lors d'une tentative de PMAD, vérifier la communication de guacd avec le reverse.
  11. Consulter les journaux si l'origine du problème n'est toujours pas identifiée.
  12. Si toute la chaîne technique fonctionne, vérifier le Referer HTTP et la configuration Guacamole.

12. Résumé

Symptôme Contrôle prioritaire
Machine grisée / hors ligne Agent Medulla et connexion de la machine
VNC indisponible TightVNC et port VNC
RDP indisponible Activation du Bureau à distance Windows
Aucune connexion VNC/RDP/SSH enregistrée Réenregistrement de la machine
Connexion Guacamole présente mais PMAD impossible Paramètres de la connexion Guacamole
Aucun sshd: revers Diagnostic du reverse SSH
Reverse présent mais aucune connexion guacd Guacamole / guacd et logs
Toute la chaîne fonctionne mais l'interface refuse la PMAD Referer HTTP / configuration Guacamole / reverse proxy

Recommandation :
Pour diagnostiquer efficacement une PMAD Medulla, procédez toujours de la machine vers Guacamole : machine en ligne → protocole VNC/RDP → enregistrement Guacamole → reverse SSH → guacd → accès HTTP Guacamole. Cette méthode permet d'identifier rapidement à quel niveau de la chaîne la connexion est interrompue.