Auteur Sujet: Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH  (Lu 28918 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance : VNC encapsulé dans SSH

Quelques exemples de cas où c'est bien pratique :
- Prendre le contrôle à distance de PC utilisés par des proches
- Accéder à distance un PC à votre domicile que vous laissé allumé (ou que vous allumez à distance par du wake on wan)
- Pour de l'aide au devoirs, cela permet de travailler à deux sur un même poste (l’élève en local, et le maître à distance).
- Pour l’accès à distance à une application spécifique, qui ne peut se lancer que sur le PC distant.

Ce tutoriel vous y aider à le faire simplement et de façon sécurisé : La connexion VNC est encapsulée et chiffrée dans un tunnel SSH.

Le serveur VNC est déjà installé sur Ubuntu, il faut juste l'activer.
Le client VNC et le client SSH est déja installé sur Ubuntu
=> Le seul logiciel à installer et le serveur SSH.

Schéma de ce que le nous allons réaliser :


vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #1 le: 11 octobre 2020 à 21:26:45 »
Installation et configuration sur le PC distant, celui sur lequel vous souhaiter prendre le contrôle à distance

Étape N°1 : Activation du serveur VNC

Lancer les paramètres d'Ubuntu :


Dans le menu "Partage", cliquer sur "Partage d'écran" :



  • Cocher la case "Autoriser les connectés à contrôler l'écran" (si cette cas n'est pas cochée, c'est ce sera juste une partage d'écran sans possibilité de contrôler le clavier / souris).
  • Cocher la case "Demander un mot de passe" si vous souhaitez pouvoir vous connecter sans avoir une validation locale. Le mot de passe fait au maximum 8 caractères. Ce n'est pas problématique d'avoir un mot de passe faible, car VNC sera protégé par le mot de passe de SSH (il faut les deux pour pouvoir se connecter).
  • Activer le partage sur le réseau proposé.


C'est fait, il est possible de se connecter à votre poste, mais uniquement depuis le réseau local.

VNC écoute sur le port 5900. Dans le passé pour rendre possible une connexion depuis Internet, on aurait juste à ouvrir le port 5900 sur la box. Aujourd'hui cette option est dangereuse et n'est pas permis par le serveur intégré dans Ubuntu: il ne répond qu'aux requêtes venant du réseau local.

On va donc passer par SSH pour transporter et sécuriser l’accès depuis Internet.

vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #2 le: 11 octobre 2020 à 21:27:04 »
Étape N°2 : Installation de SSH serveur : SSHd



Il faut ouvrir un Terminal (Le raccourci clavier : Ctrl +Alt + T) puis taper sudo apt install ssh



SSHd écoute maintenant sur le port 22.

Changement du port d'écoute pour plus de sécurité :

Même si c'est bien sécurisé, il est préférable de compliquer la tache aux hacker en se mettant pas sur le port par défaut : Je propose d'utiliser le port 2222, mais vous pouvez bien sur utiliser le port de votre choix.
Je déconseille d'utiliser les 1024 premiers ports, qui sont réservés à certains usages.
Je déconseille d'utiliser la plage du port 32768 au port 60999, utilisée par les ports "clients" ou "ports éphémères".
=> Croissiez votre port SSH entre le port 1025 et le port 32767 + entre le port 61000 et le port 65535

Pour configurer le changement de port deux solutions :

  • La mauvaise solution : Modifier le fichier /etc/ssh/sshd_config, mais lors de la mise à jour vers une prochaine version de SSH, vous aurez un avertissement car Ubuntu souhaite remplacer le fichier de configuration par le nouveau. C'est donc une solution à éviter.
  • La bonne solution : Créer un nouveau fichier /etc/ssh/sshd_config.d/port.conf avec uniquement la directive Port 2222. Ce fichier sera pris en compte et ne sera pas modifié lors d'une mise à jour.

    Pour configurer le port d'écoute 2222 pour SSHd, copier / coller ces deux lignes :
    echo "Port 2222" > port.conf
    echo "# Forcer un échange toutes les 4 secondes, pour éviter la déconnexion derrière un NAT" >> port.conf
    echo "ClientAliveInterval 4" >> port.conf
    echo "ClientAliveCountMax 22" >> port.conf
    sudo mv port.conf /etc/ssh/sshd_config.d/


La modification sera pris en compte après le prochain redémarrage du PC.

vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #3 le: 11 octobre 2020 à 21:27:33 »
Étape N°3 : Configurer votre le NAT IPv4 de votre box pour ouvrir le port 2222 vers votre PC Installation de SSH server :

Cette étape dépend de votre box. Il faut généralement aller dans le menu "Transfert de ports" qui peut se situer dans les "Paramètres avancés".

On vous demande de renseigner quelques cases :

  • Nom : C'est pour vous souvenir à quoi correspond cette règle. Mettez ce que vous souhaitez
  • Port de départ / Port de fin : Nous n'avons qu'un port à ouvrir, on met donc 2222 en port de départ et de fin
  • Protocole : SSHd est uniquement en TCP, on se limite donc à TCP
  • Adresse IP locale : C'est l'adresse de votre PC sur votre réseau local


L'Adresse IP local se récupère en allant dans les Paramètres d'Ubuntu, puis dans "Réseau" pour une connexion filaire ou "Wi-Fi" pour une connexion Wi-Fi

Il faut ensuite cliquer sur l’icône paramètre située à droite de la carte réseau / Wi-Fi utilisée


On arrive sur une fenêtre de ce type où l'adresse IP locale est ici 192.168.0.20. C'est cette IP qu'il faut indiquer sur votre routeur.


Je rajouterai ultérieurement des copie d'écran pour d'autre type de box.

vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #4 le: 11 octobre 2020 à 21:29:14 »
Configuration sur le PC Ubuntu local, celui depuis lequel vous aller vous connecter

On utilise Remmina, logiciel installé de base dans Ubuntu.

Si vous n'avez pas Ubuntu d'installé, il est possible de faire la prise de contrôle depuis un clé USB bootable Ubuntu : Remmina est disponible !



Étape N°1 : Configuration de Remmina

Quand on lance Remmina, on arrive sur cette interface qui liste les connexions à distance déjà crées.


  • Point N°1: Pour créer une nouvelle connexion, il faut cliquer sur l’icône 1 située tout en haut à gauche.

On arrive sur la fenêtre ci-dessous :

  • Point N°2 : C'est un nom pour décrire votre connexion, afin de la retrouver ensuite. Indiquez ce que vous souhaitez.
  • Point N°3 : Le protocole proposé par défaut est RDP, c'est le protocole pour se connecter à un PC Windows. Dans notre cas il faut prendre le "Greffon VNC pour Remmuna".
  • Point N°4 : La connexion se fait sur ::1 (IPv6 locale) car SSH nous expose la connexion sur localhost. A noter que ::1 fonctionne même si vous n'avez pas d’accès à l'internet IPv6.
  • Point N°5 : C'est le mot de passe du serveur VNC, celui qui est limité à 8 caractères.
  • Point N°6 : Si le PC dont vous prenez le contrôle à une connexion à Internet en fibre optique, avec un bon débit montant, vous pouvez préférer avoir un affichage de qualité en mettant 65536 couleurs (16 bits par pixels) et une qualité de compression "Bonne".
  • Point N°7 : Une fois ces réglages réalisés, passez sur l’onglet "Tunnel SSH"

L'onglet Tunnel SSH : (copie d'écran avec Ubuntu 20.04 LTS)

  • Point N°8 : Activer le tunnel SSH. Remina va utiliser SSH pour encapsuler la connexion VNC. SSH client est déjà installé sur Ubuntu : il n'y a rien à installer pour que cela fonctionne.
  • Point N°9 : IPv4 publique ou IPv6 du PC que vous prenez le contrôle. Si l'IPv4 publique change et que votre interlocuteur ne la connaît pas, demandez lui de vous dire quelle est l'IPv4 publique affichée sur la page http://ip.lafibre.info/
    L'IP est suivie d'un deux-points, puis du port où écoute SSHd, 2222 dans notre exemple.
  • Point N°10 : Le nom d'utilisateur est ici le nom d'utilisateur sur le PC Ubuntu distant, celui qui est utilisé pour monter la connexion SSH.
  • Point N°11 : C'est le mot de passe sur le PC distant associé au nom d'utilisateur. Il est conseillé de mettre un mot de passe fort, plus de 8 caractères. Contrairement au mot de passe du serveur VNC, là il n'y a pas de limite. Si vous avez du mal à vous y retrouver, c'est le mot de passe demandé pour passer super-utilisateur sur le PC distant.
  • Point N°12 : Cela enregistre et va se connecter dans la foulée.

Avec Ubuntu 22.04 LTS, la disposition est légèrement différente. Le choix du type d'authentification se fait avant le nom de l'utilisateur :

vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #5 le: 11 octobre 2020 à 21:29:54 »
Étape N°2 : Connexion avec Remmina

Une fois la connexion configurée, elle est listée dans la fenêtre et il suffit de double cliquer pour se connecter :


Si le mot de passe rentré n'est pas le bon, Remmina va vous proposer de re-essayer.

Ne vous trompez pas de mot de passe !

Si c'est cette fenêtre, c'est le mot de passe pour le serveur SSH, donc le mot de passe demandé pour passer super-utilisateur sur le PC distant :


Si c'est cette fenêtre, c'est le mot de passe pour le serveur VNC, le mot de passe limité à 8 caractères, rentré dans la fenêtre "Partage d'écran" d'Ubuntu.


N'oubliez pas de cocher la case "Enregistrer le mot de passe" si vous souhaitez ne pas avoir à rentrer un de deux mot de passe (ou les deux) les prochaines fois.

La connexion s'étable et vous avez l'écran du PC distant :


Une notification informe l'utilisateur qui est éventuellement devant l'ordinateur que vous contrôlez son ordinateur. Vous êtes identifié comme "IPv6-localhost" car avec SSH, la demande se fait depuis l'ordinateur local (VNC ne sait pas que cela a été transporté par SSH)

vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #6 le: 11 octobre 2020 à 21:40:02 »
Que faire si vous avez le message "VNC server closed connexion" ?



Si vous avez ce message, cela signifie que la connexion SSH sur le PC distant a bien fonctionné et vous pouvez déjà transférer des fichiers avec FileZilla (voir l'explication ci-dessous) ou vous connecter en ligne de commande.

Ce qui ne fonctionne pas, c'est VNC server, le process n'écoute pas sur le port 5900.

La cause la plus fréquente, c'est la connexion a été modifiée et que le PC distant n'est plus connecté au même réseau Wi-Fi.

En effet, pour des raisons de sécurité, il faut activer le partage d'écran, connexion par connexion. Ainsi si vous vous connecter sur un hotspots wi-fi gratuit, il ne sera pas possible à un attaquant d'essayer de trouver le mot de passe de VNC, vu qu'il n'écoutera pas sur la connexion.

Ci-dessous, on voit que la partage de connexion est activé pour le réseau Wi-Fi "IPv6forever" mais que le PC est connecté au réseau WiFi "Jacques_2Ghz" et que le partage d'écran n'est pas activé sur ce réseau Wi-Fi.

Il faut donc demander à votre interlocuteur d'activer le partage d'écran sur le réseau utilisé :






Si vous souhaitez complètement désactiver le partage d'écran, il faut retirer l'autorisation pour tous les réseau que vous avez autorisé, un à un.

Pour le réseau actuel c'est un commutateur et pour les autres réseaux, une petite croix en forme de "x" sur laquelle il faut cliquer pour supprimer le partage :



vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #7 le: 11 octobre 2020 à 21:47:52 »
PC avec connexion automatique (pas besoin de saisir de mot de passe quand on l'allume) : Que faire si le mot de passe de VNC ne fonctionne pas après un redémarrage du PC ou qu'il vous demande de déverrouiller votre trousseau de clé ?



Ubuntu assure par défaut une bonne sécurité et confidentialité des données : Les mots de passes des différentes applications (exemple celui de Skype ou celui de VNC dans notre cas) ne sont plus stockés en clair dans un fichier de configuration, mais dans le "Trousseau de clés par défaut", une sorte de coffre sécurisé qui contient tous les mots de passe. Mais, pour être sécurisé, ce "coffre" a évidemment besoin lui-même d'un mot de passe et celui-ci ne doit être écrit nulle part sur le système.
Au démarrage de la session, si votre nom d'utilisateur et votre mot de passe vous sont demandés, c'est cette action qui va déverrouiller le trousseau de clés.
Si la connexion automatique est activée, Ubuntu se lance sans demander de mot de passe au démarrage de la session et le trousseau de clés n'est pas déverrouillé. VNC serveur, utilisé pour la prise de contrôle à distance n'a pas accès à son mot de passe et refuse les connexions.

Deux solutions sont possibles :
- Désactiver la connexion automatique et demander un mot de passe au démarrage de la session (à chaque démarrage de l'ordinateur)
- Stocker le "Trousseau de clés par défaut" en clair, ce qui est donc une perte de sécurité (la porte du coffre est ouverte), mais pour le contrôler un PC à distance, la sécurité est gérée par VNC et on pourrait même supprimer le mot de passe VNC si c'était autorisé (faites juste attention que le mot de passe utilisé par VNC ne soit pas utilisé autre part).




Stocker le "Trousseau de clés par défaut" en clair et cesser d'avoir des demandes pour déverrouiller le trousseau de clés
La solution est simple : il faut supprimer le mot de passe du trousseau de clés.


Cliquer sur le menu Ubuntu pour afficher toutes les applications. Cherchez l'application "Mot de passe et clés" qui est préinstallé par défaut avec Ubuntu.



Il vous indique que "Le trousseau est verrouillé". Cliquer sur "Déverrouiller"



Votre mot de passe vous est demandé :



Le "Trousseau de clés par défaut" est déverrouillé et laisse apparaître les différentes applications qui ont stockés un mot de passe (ci-dessous uniquement VNC).

On utilise a flèche en haut à gauche pour revenir à l'écran listant tous les trousseaux.



Cliquer avec le bouton droit sur le "Trousseau de clés par défaut"
Cliquer sur "Modifier le mot de passe"



Le système vous demande une dernière vois votre mot de passe :



Il vous demande le nouveau mot de passe. Pour stocker le "Trousseau de clés par défaut" en clair et cesser d'avoir des demandes pour déverrouiller le trousseau de clés, il ne faut pas mettre de nouveau mot de passe : on laisse les deux champs vides et on clique sur continuer.



Une alerte vous informe que la porte du coffre est ouverte et qu'une personne compétente connecté à votre PC sera en mesure de récupérer le contenu du trousseau de clés.
On cliquer sur continuer pour valider.



Il faut ensuite redémarrer l'ordinateur et l’accès à distance sera possible sans avoir besoin de rentrer le moindre mot de passe sur le PC, ce qui vous permet par exemple de le redémarrer à distance sans perdre la main.

vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #8 le: 11 octobre 2020 à 22:18:30 »
Les options de Remmina pour être à l'aise dans une prise de contrôle à distance :

La seconde icône en haut à gauche permet de passer en plein écran.


Une fois en plain écran, vous pouvez utiliser les icônes en haut pour revenir en mode fenêtré :


Si vous avez un écran dans une résolution plus petite que celui sur lequel vous prenez la main (cas d'un PC portable qui prend la main sur un PC fixe), vous pouvez mettre à l'échelle automatiquement, via l’icône "Basculer en mode réduit", ce qui va permettre d'afficher tout l'écran (mais cela pourrait être difficilement lisible) :


vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #9 le: 11 octobre 2020 à 22:23:47 »
Et le transfert de fichier encapsulé dans SSH, c'est possible ?

Remmina intègre un client pour faire du transfert de fichier directement depuis Remmina, mais il est peu pratique.

Je vous conseille le logiciel FileZilla, qui est dans la logithèque Ubuntu.


Pour l'installer deux solutions :

  • Démarrer un terminal (Le raccourci clavier : Ctrl +Alt + T) puis taper sudo apt install filezilla
  • Depuis la logithèque Ubuntu

La configuration se fait en un écran, depuis le menu "Fichier" => "Gestionnaire de Sites..." :


  • Point N°1: Pour créer une nouvelle connexion, il faut cliquer sur Nouveau site
  • Point N°2 : C'est un nom pour décrire votre connexion, afin de la retrouver ensuite. Indiquez ce que vous souhaitez.
  • Point N°3 : Sélectionnez le protocole "SFTP - SSH File Transfert Protocol".
  • Point N°4 : IPv4 publique ou IPv6 du PC que vous prenez le contrôle. Si l'IPv4 publique change et que votre interlocuteur ne la connaît pas, demandez lui de vous dire quelle est l'IPv4 publique affichée sur la page http://ip.lafibre.info/. Le port est celui où écoute SSHd, 2222 dans notre exemple.
  • Point N°5 : L'identifiant est ici le nom d'utilisateur sur le PC Ubuntu distant, celui qui est utilisé pour monter la connexion SSH.
  • Point N°6 : C'est le mot de passe sur le PC distant associé au nom d'utilisateur. Si vous avez du mal à vous y retrouver, c'est le mot de passe demandé pour passer super-utilisateur sur le PC distant.
  • Point N°7 : Une fois terminé vous pouvez valider pour enregistrer les paramètres.

La connexion se fait depuis le menu "Fichier" => "Gestionnaire de Sites...".
Cliquer sur "Connexion"

Il est possible d’enregistrer plusieurs "Sites" qui sont autant de PC sur lequel SSHd est installé. (il n'est pas nécessaire d'avoir VNC d'activé pour faire un transfert de fichier : cela utilise directement les capacités de SSHd.




Cet tutoriel et les captures d'écran qui l'illustrent sont publiés sous la licence Creative Commons CC BY-SA 4.0, afin de permettre une large diffusion (il suffit de citer l'auteur, Vivien GUEANT et de mettre un lien vers ce tutoriel).
Tutoriel pour comprendre comment reprendre un contenu CC BY-SA 4.0.

vivien

  • Administrateur
  • *
  • Messages: 47 081
    • Twitter LaFibre.info
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #10 le: 01 novembre 2020 à 22:09:21 »
Et pour prendre le contrôle d'un PC Ubuntu (VNC encapsulé dans SSH) depuis Windows 10 ?

Je n'ai pas eu ce besoin, mais pour ce tutoriel, j'ai cherché une solution simple, équivalente à Remmina sous Ubuntu et je ne l'ai pas trouvé.

J'ai bien trouvé un client VNC sous Windows qui propose la connexion sur SSH : TightVNC Java Viewer

Son problème ? Cela ne fonctionne pas, je n'ai jamais réussi à me connecter.
Si vous savez comment résoudre ce problème, je suis preneur.



L'installation se fait en téléchargeant TightVNC Java Viewer sur https://www.tightvnc.com/download.php
Attention à bien prendre la version Java, TightVNC for Windows, la version standard peut se connecter à VNC, mais en direct. Il ne sait pas monter automatiquement un tunnel SSH.

Comme c'est un client Java, il faut également installer Java SE (160 Mo !) qui est disponible sur https://www.oracle.com/java/technologies/javase-downloads.html


Je suis preneur de solutions pour faire fonctionner ce client over ssh ou en avoir un autre.



Une autre solution est de monter le tunnel SSH depuis une invite de commande de Windows 10.

Depuis la mise à jour Fall Creators Update, Windows 10 intègre un client OpenSSH vous permettant de vous connecteur à un serveur SSH, sans avoir besoin d'installer Putty.

Voici les étapes à suivre pour installer le client SSH de Windows 10 :

  • Dans le menu démarrer, recherchez « Fonctionnalités facultatives »
  • Si le client OpenSSH n’est pas déjà présent, choisissez alors « Ajouter une fonctionnalité ».
  • Sélectionner le Client OpenSSH et cliquez sur installer

Mais là aussi, j'ai utilisé la ligne de commande qui fonctionne très bien sous Ubuntu, mais pas de redirection du flux VNC sur la machine (la connexion SSH fonctionne très bien)


Si vous avez une solution pour faire la même chose sous Windows 10, je suis preneur.

Anonyme

  • Invité
Tutoriel pour accéder à un PC Ubuntu à distance: VNC encapsulé dans SSH
« Réponse #11 le: 01 novembre 2020 à 22:43:18 »
Un oeil la dessus, avec un proxy socks.

https://www.tuteurs.ens.fr/internet/loin/tunnel.html