SSH, VNC, SSHFS, NFS, SFTP, etc.

Table des matières   Liens internes à cette page

1) Introduction
2) SSH, prise de contrôle en mode texte.
3) x11VNC, prendre le contrôle à travers le réseau
4) tightVNC, Virtual Network Computing (VNC)
5) Résumé des actions à faire pour la connexion locale
6) Résumé des actions à faire pour la connexion à travers Internet
7) Raspberry pi et pcduino
8) SSHFS : SSH File System
9) NFS Network File System
10) Aide à distance à travers Internet

1) Introduction   Top

Tout ce qui suit concerne le système d'exploitation GNU/Linux Ubuntu avec KDE.
Le but de cette page est de donner des informations sur des manières de prendre contrôle d'un ordinateur depuis un autre (SSH, VNC) ou sur une manière d'utiliser le réseau pour partager des fichiers (SSHFS, NFS, SFTP).
J'expliquerai comment prendre contôle et partager à travers le réseau local, et à travers le réseau public (Internet).
Je ne suis pas un spécialiste, j'ai juste fait des essais et lu beaucoup de documentation.
Il existe d'autres logiciels de prises de contrôle, tels que "Veyon", qui est utilisé dans des classes.
Jutiliserai la terminologie classique :
Le serveur est l'ordinateur dont on prendra le contrôle, et celui dont ont accédera aux fichiers.
Le client est l'ordinateur qui prendra contrôle de l'ordinateur "serveur" et qui lira les fichiers se trouvant sur l'autre ordinateur. On travail sur l'ordinateur "client" et accède à l'ordinateur "serveur" à travers le réseau.
J'écrirai "serveur" et "client" au lieu de "ordinateur serveur" et "ordinateur client".

2) SSH, prise de contrôle en mode texte.   Top

SSH signifie "Secure Shell", sert à avoir une connexion à distance sécurisée.
Le protocole et logiciel SSH permet facilement de prendre contrôle d'un ordinateur distant, en réseau local ou en réseau plublic.

Installation

Sur le serveur, dans un Terminal, taper :
sudo apt-get update
sudo apt-get install ssh
sudo apt-get install nmap net-tools
La première ligne met à jour la liste des dépôts de logiciels.
La deuxième ligne installe le logiciel et protocol SSH.
La troisième ligne install des utilitaires de gestion du réseau.

Sur le client, dans un Terminal, taper :
sudo apt-get update
sudo apt-get install nmap net-tools
Apparemment, le logiciel "ssh" client est installé par défaut.

Si l'installation a déjà été faites, l'instruction ci-dessus (sur fond blanc) n'aura pas d'influence, cela sera indiqué dans le Terminal.
On peut aussi utiliser le gestionnaire de paquet "Synaptic" pour ces installations.

Cas où la connexion est locale.

C'est le cas si le serveur et le client sont connectés au même routeur.
Sur le serveur et le client, dans un Terminal tapez :
ifconfig
Dans l'ensemble des lignes obtenues, une ligne devrait commencer par "inet" suivit d'un numéro du genre :
192.168.xxx.xxx   ou 172.16.xxx.xx
Les "xxx" représentent des nombres.
Si le début est le même sur le serveur et le client, alors ils sont reliés au même routeur. Ils sont sur le même réseau local.
On peut aussi taper
hostname -I

Sur le client, dans un Terminal tapez :
nmap 192.168.xxx.*   ou
nmap 172.16.xxx.*
Le numéro dépend de ce que vous avez obtenu avec "ifconfig".
Cela donnera tous les numéros ip locaux des appareils qui sont connectés sur ce réseau local.
Il y en aura probablement un avec le numéro : 192.168.xxx.1 (ou 172.16.xxx.1) qui sera le modem lui-même. Ce numéro sera utile pour la configuration dans le cas où la connexion se fait à travers Internet.

Pour établir la connexion et prendre contrôle du serveur, dans un Terminal du client, taper :
ssh 192.168.xxx.xxx -l bg   ou
ssh bg@172.16.xxx.xxx
Le numéro (192.168.xxx.xxx) ou (172.16.xxx.xxx) est celui du serveur
le nom "bg" est celui de l'utilisateur du serveur.
Si vous ne le conaissez pas, depuis le terminal client, tapez :
echo $USER
Il n'y a plus qu'à taper le mot de passe de l'utilisateur du serveur.
Le Terminal sur le client est devenu un Terminal du serveur.
Pour vérifier, tapez "ifconfig" et le numéro ip local du serveur devrait apparaître.
On travail ainsi depuis le client sur le serveur !

Pour fermer la connexion, dans le Terminal taper :
exit

Cas où la connexion est à travers Internet.

C'est plus compliqué, car le modem-routeur transforme une adresse ip publique en adresse ip locale et peut accéder à plusieurs ordinateurs locaux.

Pour la configuration, vous devez pouvoir accéder au modem-routeur et ne pas avoir peur de modifier cerains de ses paramètres.
Comme il y a différent "routeurs", les explications ci-dessous devront être adaptée à votre routeur.
Chez moi, j'ai même deux routeurs qui se suivent, j'ai donc dû configurer les deux.

Configuration du modem-routeur
Depuis le client (serveur aussi possible), taper :
nmap 172.16.xxx.*
"172.16.xxx" est le début de l'ip locale du client.
Vous obtenez une liste d'adresse ip locales. L'une d'entre elles correspond à l'adresse de votre routeur. Elle est généralement de la forme 172.16.xxx.1, ou plus souvent de la forme 192.168.xxx.1.
Depuis un navigateur, firefox par exemple, taper dans l'URL (adresse Internet) :
172.16.xxx.1
"172.16.xxx.1" doit être l'adresse de votre routeur.
Une fenêtre d'autentification s'ouvre, avec la demande d'un nom utilisateur et d'un mot de passe.
Vous devriez les avoir dans votre documentation concernant le routeur.
Souvent, l'utilisateur est "admin".
Souvent le mot de passe est "admin" ou "1234" ou "password".

On arrive dans une fenêtre de configuration du routeur.
Il faut aller dans un mode avancé et dans Port Forwarding / Port Triggering.
On veut faire un "Port Forwarding".
port_forwarding
Chez moi, je dois taper l'adresse ip locale de mon serveur et cliquer sur Add.
Ensuite, je dois sélectionné le service ajouté et cliquer sur Edit Service.
Je dois changer son : "service name", avec un nom de mon choix, qui indique à quoi il correspond.
Le "Service Type" : TCP/UDP, je crois que TCP est important.
"Starting Port", j'ai choisi "5904".
"Ending Port", j'ai choisi "5904" aussi.
"Server IP Adress : "172.16.xxx.xxx" est celui du serveur, déjà tapé en principe.
C'est tout, vous pouvez cliquer sur Logout.
Tout cela sert à indiquer au routeur que si un paquet (message) arrive depuis Internet (avec l'IP public), sur le port 5904, ce paquet doit être redirigé sur l'ordinateur local ayant l'IP local "172.16.xxx.xxx".

Il faut encore modifier le fichier "/etc/ssh/sshd_config" du serveur. Depuis un Terminal sur le serveur, tapez :
sudo nano /etc/ssh/sshd_config
"nano" peut être remplacé par "gedit", "leafpad", "geany" ou n'importe quel éditeur de texte.
On peut aussi taper sudo mc pour rester en mode texte, ce qui peut être très utile.
Il faudra changer la ligne : #Port 22 qui est en commentaire, en Port 5904, qui n'est plus en commentaire.
Il faut ensuite redémarrer le serveur.
Le numéro "5904" est le numéro de port défini dans le routeur, comme expliqué ci-dessus.

Tout cela ne doit être fait qu'une seule fois, ensuite c'est similaire à une connexion locale.

Il manque encore l'information de l'IP public sur lequel le serveur est connecté.
Depuis le serveur, cliquez sur un des liens ci-dessous pour connaître cet IP public du serveur.
Mon-ip en php
Mon-ip.com
checkip.org
Notez ce numéro. Chez moi c'est : 85.3.xxx.xxx
"xxx.xxx" sont deux nombres qui changent parfois.

Pour établir la connexion et prendre contrôle à travers Internet du serveur, dans un Terminal du client, taper :
ssh bg@85.3.xxx.xxx -p 5904
Le numéro "85.3.xxx.xxx" est celui de l'IP public du serveur
le nom "bg" est celui de l'utilisateur du serveur.
Si vous ne le conaissez pas, depuis le terminal client, tapez :
echo $USER
Il n'y a plus qu'à taper le mot de passe de l'utilisateur du serveur.
Le Terminal sur le client est devenu un Terminal du serveur.
Pour vérifier, tapez "ifconfig" et le numéro ip local du serveur devrait apparaître.
On travail ainsi depuis le client sur le serveur à travers Internet !

Suppléments

Chez moi, vu que j'ai fait une redirection de ports pour ssh, même en local, je dois taper :
ssh bg@172.16.xxx.xxx -p 5904

La commande suivante permet d'exécuter depuis le Terminal, une application du GUI (Graphical User Interface) tel que "Dolphin" ou "Nautilus" ou "firefox".
ssh -X bg@172.16.xxx.xxx -p 5904
Par exemple, en tapant depuis le Terminal :
firfox
On exécute le programme serveur "FireFox" dans une fenêtre graphique.

Dans le cas où la même adresse IP locale est utilisée par un autre ordinateur du côté du serveur, il faut taper (du côté du client :
ssh-keygen -f "/home/bg/.ssh/known_hosts" -R "172.16.xxx.xxx"
"172.16.xxx.xxx" est l'IP locale du serveur.
Ensuite, lors d'une reconnection ssh depuis le client, il faudra confirmer que l'on génère une nouvelle clé de cryptage.

Puisqu'on est en mode texte, j'aime bien avoir un gestionnaire de fichiers en mode texte, qui est visuel, il s'agit de midnight commander.
Vous pouvez l'installer sur le serveur, depuis le client en tapant dans le terminal :
sudo apt-get install mc
Pour l'exécuter, il suffit de tapez mc.
Pour modifier des fichiers systèmes, on peut l'exécuter en mode super utilisateur (root) : sudo mc.


Voivi encore une commande qui permet de trouver les IP locaux des appareils reliés au même routeur que votre ordinateur :
sudo apt-get install arp-scan
sudp arp-scan -l
La première ligne installe le logiciel "arp-scan".
La deuxième ligne exécute le programme et vous indique les IP locaux des appareils reliés au même routeur que votre ordinateur.

On peut copier des fichiers du server vers le client et inversément.
Deux logiciels standards existent pour cela :
scp pour une copie de fichiers, similaire à la commande "cp".
sftp pour un transfert de plusieurs fichiers, similaire à la commande "ftp".
Une très bonne information est donné sur le site Web de "doc.ubuntu-fr.org" : ssh, scp, sftp

Pour copier un fichier "aaa.txt" du client dans un fichier "bbb.txt" sur le serveur, depuis le Terminal tapez :
scp aaa.txt   bg@172.16.xxx.xxx:/home/bg/bbb.txt   ou
scp -P 5904 aaa.txt   bg@172.16.xxx.xxx:/home/bg/bbb.txt
"bg" est le nom de l'utilisateur sur le serveur.
"172.16.xxx.xxx" est l'ip local du serveur.
"/home/bg/" est le répertoir serveur où le fichier bbb.txt sera créé.
L'option "-P 5904" est nécessaire si une redirection de port a été faite.
Le mot de passe de l'utilisateur serveur doit être tapé.

Pour copier un fichier "aaa.txt" du serveur dans un fichier "bbb.txt" sur le client, depuis le Terminal tapez :
scp bg@172.16.xxx.xxx:/home/bg/aaa.txt   bbb.txt   ou
scp -P 5904 bg@172.16.xxx.xxx:/home/bg/aaa.txt   bbb.txt
"bg" est le nom de l'utilisateur sur le serveur.
"172.16.xxx.xxx" est l'ip local du serveur.
"/home/bg/" est le répertoir serveur d'où le fichier aaa.txt est copié.
L'option "-P 5904" est nécessaire si une redirection de port a été faite.
Le mot de passe de l'utilisateur serveur doit être tapé.

Pour ne pas devoir retaper le mot de passe à chaque fois, installer sshpass (sudo apt-get install sshpass)

Pour copier un fichier "aaa.txt" du serveur dans un fichier "bbb.txt" sur le client, depuis le Terminal tapez :
sshpass -p "passserver" scp -P 5904 bg@172.16.xxx.xxx:/home/bg/aaa.txt   bbb.txt

Pour copier un fichier "aaa.txt" du client dans un fichier "bbb.txt" sur le serveur, depuis le Terminal tapez :
sshpass -p "passserver" scp -P 5904 aaa.txt   bg@172.16.xxx.xxx:/home/bg/bbb.txt

Utilisation de sftp depuis Dolphin pour accéder aux fichiers du serveur.
Depuis Dolphin, dans le volet de gauche, aller sur "Réseau", puis double cliquer sur "Ajouter un dossier réseau".
Sélectionner "Shell sécurisé (ssh)", puis cliquer sur "Suivant".
La fenêtre suivant s'ouvre, qu'il faut remplir :
dolphin_sftp

On peut aussi faire un clique droit dans la partie basse du volet de gauche et sélectionner : "Ajouter un élément...", puis taper :
Le nom que vous désirez pour "l'Intitulé"
"sftp://bg:motdepass@172.16.xxx.xxx:22/home/bg
"bg" est le nom de l'utilisateur du serveur.
":motdepasse" est celui de l'utilisateur (bg) du serveur. Il n'est pas obligatoire et sera demandé s'il n'est pas indiqué ici.
"172.16.xxx.xxx" est l'adresse ip local du serveur.
"22" est le port par défaut pour le ssh. Moi j'utilise le port 5904 pour le ssh, comme indiqué plus haut dans la connexion à travers Internet.
"/home/bg" est le répertoire du serveur que l'on désire accéder.


3) x11VNC, prendre le contrôle à travers le réseau   Top

VNC signifie Virtual Network Computing
Ce protocole et les logiciels correspondants permettent de prendre contrôle d'un "serveur" depuis un "client".
Cette partie sera moins détaillée que la partie concernant "SSH", à laquelle il est bon de se référer.

Installation

Sur le serveur, dans un Terminal, taper :
sudo apt-get update
sudo apt-get install x11vnc
Ceci install le serveur VNC sur l'ordinateur "serveur".

Sur le client, dans un Terminal, taper :
sudo apt-get update
sudo apt-get install gvncviewer
Ceci install le logiciel permettant de prendre contrôle du serveur depuis le client, ceci en mode graphique.

Cas où la connexion est locale.

C'est le cas si le serveur et le client sont connectés au même routeur.
Sur le serveur, dans un Terminal tapez :
ifconfig
x11vnc -passwd mypass -display :0
"ifconfig" sert à connaître l'adresse IP local du serveur.
"mypass" est un mot de passe arbitraire, qui sera utilisé par le client.
Beaucoup de lignes s'affichent. Quelque part il est indiqué le numéro d'affichage "display" utilisé. C'est généralement "0", mais cela peut être "1" ou "2".
Le port utilisé est aussi indiqué.
Si on utilise ssh, cette commande peut être tapé dans le Terminal qui se trouve chez le client, mais qui commande le serveur !

Sur le client, ouvrez un autre Terminal, qui sera donc local au client. Dans ce Terminal tapez :
gvncviewer 172.16.xxx.xxx:0
"172.16.xxx.xxx" est l'adresse IP locale du serveur.
Dans de nombreux cas, cette adresse est plusôt : "192.168.xxx.xxx".
":0" peut être parfois ":1" ou ":2" suivant le "display" utilisé par le serveur.
Une fenêtre s'ouvre, demandant le mot de passe défini par le serveur. "mypass" dans l'exemple ci-dessus.

Si tout c'est bien passé (ce qui n'arrive jamais la première fois (:-( ), une fenêtre s'ouvre chez les client, affichant l'écran du serveur. Si vous modifiez quelque chose dans la fenêtre chez le client, vous voyez la même modification sur l'écran du serveur.

En fermant la fenêtre chez le client, vous fermez cette communication.

Au lieu d'utiliser "gvncviewer" on peut utiliser depuis le client :
vncviewer 172.16.xxx.xxx:0

Cas où la connexion est à travers Internet.

En se référent à la partie concernant SSH, indiquée plus haut, Il faut avoir :
° fait les modifications du router
° modifié le fichier "/etc/ssh/sshd_config" du serveur
° noté l'adresse IP public (85.3.xxx.xxx)

Comme pour la connexion local, sur le serveur, dans un Terminal tapez :
x11vnc -passwd mypass -display :0
Je fais cela depuis le Terminal se trouvant chez le client, qui commande le serveur.

Sur le client, ouvrez un autre Terminal, qui sera donc local au client. Dans ce Terminal tapez :
gvncviewer 85.3.xxx.xxx:0
"85.3.xxx.xxx" est l'adresse IP public du serveur. Il faut l'avoir noté avant de quitter le serveur.
":0" peut être parfois ":1" ou ":2" suivant le "display" utilisé par le serveur.
Une fenêtre s'ouvre, demandant le mot de passe défini par le serveur. "mypass" dans l'exemple ci-dessus.

Si on a oublié de noter l'adresse IP public du serveur , Je ne vois pas comment on pourrait s'y connecter, désolé.

Suppléments

Voici quelques références que j'ai utilisé pour comprendre ce que j'explique ici :
Prenez VRAIMENT la main à distance sur votre Raspberry Pi avec x11VNC
SSH port forwarding
x11vnc : contrôler un ordinateur à distance du site ubuntu-fr
Chapter 13. scp, sftp et les tunnels avec ssh. De "linux-france.org", des explications sur le ssh.
Un énorme Tutoriel sur les serveurs, de "linux-france.org

Quelques remarques :
1) Si vous tapez dans le Terminal contrôlant le servur : sudo reboot   ou   sudo shutdown -r now, le serveur redémarre.
Cela prend quelques dizaines de secondes. Après ce redémarrage, vous pouvez vous reconnecter avec ssh.
2) Le ":0" peut être un ":1" ou ":2", suivant ce que la connexion "ssh" vous a indiqué.
En principe pour prendre contrôle, il faut que ce soit une ":0".
3) Si vous êtes fatigué de devoir taper le mot de passe avec vncviewer, voici une solution :
créer un fichier "pass.txt" contenant votre mot de passe "monpassword".   Tapez :
vncviewer 185.3.xxx.xxx:0 -autopass < pass.txt
4) x11vnc -passwd monpassword -display :0 -geometry 1280x720 permet de définir la taille qu'aura l'écran une fois que le client se sera connecté avec vncviewer. Ce n'est donc pas le client qui choisi la taille de la fenêtre qui représentra l'écran du serveur, mais c'est le serveur lui-même.
5) Si on a changé de serveur, branché sur la même adresse IP locale, il faut effacer une signature, qui est stockée dans $HOME/.ssh/known_hosts
On peut taper : ssh-keygen -f "$HOME/.ssh/known_hosts" -R 172.16.xxx.xxx
172.16.xxx.xxx doit être l'adresse IP du serveur.
6) En tapant ssh -X 172.16.0.2 -l pi il y a la possibilité d'exécuter des applications graphiques depuis le terminal.
Par exemple, en tapant cheese cela lance une fenêtre graphique qui montre sur votre écran ce que voit la Webcam.
Il faut avoir installé "cheese" sudo apt install cheese


4) tightVNC, Virtual Network Computing (VNC)   Top

Au lieu de x11vnc, on peut vouloir installer tightvnc, que je trouve moins bien. Mais j'en parle ici, car j'ai commencé mes essais avec lui et j'ai déjà écrit quelques lignes le concernant.

Pour installer tightvnc sur le serveur, taper :
sudo apt-get update
sudo apt-get install tightvncserver
Il faudra choisir un mot de passe, qui sera utile lors de la connexion graphique.

Pour installer tightvnc sur le client, taper :
sudo apt-get update
sudo apt-get install tightvncviewer

Dans un terminal serveur, taper :
tightvncserver
C'est une commande qui est donc lancée sur le serveur. Elle peut être tapée directement sur le serveur, ou depuis le Terminal qui s'est connecté par "ssh" précédemment.
Normalement, quelques lignes de réponses arrivent, avec la ligne :
"Log file is /home/bg/.vnc/bg:1.log"
Le ":1" est important pour la suite et pourrait être un :2 ou :3

Depuis un autre Terminal du client, tapez :
xtightvncviewer
Il faut taper l'adresse IP que vous aviez obtenu du serveur et que vous avez déjà utilisé une fois, exemple :
172.16.xxx.xxx:1
Le ":1" est important, cela peut être un ":2" ou ":3".

Si tout c'est bien passé, une fenêtre s'ouvre, avec l'écran du serveur.
Cela m'a pris des heures avant que tout fonctionne, il y a beaucoup de fausses informations sur le Web et des informations dépassées. Beaucoup de détails comptent, comme le "-l bg" et le ":1"
Un site important est celui de raspberry pi sur le Remote-access, Mais en le suivant, cela n'a pas fonctionné chez moi. En particulier, ils indiquent d'installer "realvnc-vnc-server", qui n'a pas fonctionné chez moi. J'ai donc préféré "tightvncserver".
lien sur la page précédente du "remote-access"
XVNC de doc.Ubuntu-fr.org
Doc sur tightvnc.com
VNC CONNECT realVNC, pour connexion à travers Internet.

L'essentiel de ce qui précède, je l'ai appris sur la vidéo suivante :
Remotely Access a Raspberry Pi Desktop from MAC OSX with VNC.
Très utile pour contrôler un Raspberry pi depuis un autre ordinateur.
En particulier, on peut voir l'écran du Raspberry pi sur l'écran de l'ordinateur principal et ainsi on peut enregistrer l'écran, sans devoir le filmer. La qualité de la vidéo est ainsi bien meilleure.

Quelques informations supplémentaires :
1) Dans le terminal qui est connecté par "ssh" au serveur, on peut fermer la connexion en tapant :
tightvncserver -kill :1
2) On peut changer la taille de la fenêtre graphique de connexion au serveur, avant la connexion graphique, en tapant dans le terminal ouvert en ssh :
tightvncserver -geometry 1600x1200
3) Le curseur par défaut est une croix, ce qui m'a déplu et pris deux heures à modifier.
Une fois que toute connexion est arrêtée, depuis le serveur, il faut éditer le fichier qui se trouve dans /home/bg/.vnc et qui s'appelle xstartup
Le dossier en question (.vnc) est un dossier caché, comme tous les dossiers qui commencent par un "."
Depuis le gestionnaire de fichiers, dans le menu "Voir", on peut demander d'afficher les fichiers cachés Ctrl+H
Un clique droit sur "xstartup" permet de l'ouvrir dans un éditeur de textes. Voici les lignes que j'ai :
#!bin/sh

xrdb $HOME/.Xresources
xsetroot -solid grey -cursor_name left_ptr
...
/etc/X11/Xsession
Les "..." sont des lignes que je n'ai par recopiées.
La partie -cursor_name left_ptr a été ajoutée par moi-même.
Elle permet de modifier le curseur de base. Ci-dessous, il y a d'autres curseurs possibles.
man xsetroot donne des informations.
J'ai également modifié le fichier : "/etc/vnc/xstartup"
Pour cela, il faut l'éditer en mode super-utilisateur. Sur le serveur, dans un Terminal, j'ai tapé : sudo gedit, mais "sudo geany" ou "sudo" un autre éditeur de texte est bon aussi. J'ai ensuite ouvert le fichier "/etc/vnc/xstartup" et fait la même adjonction qu'indiqué plus haut, j'ai ajouté "-cursor_name left_ptr" aprés "xsetroot -solid grey".
Je ne suis pas sûr que cela était nécessaire, mais après deux heures d'essai, j'étais content d'avoir un curseur en forme de flèche. Il reste un "petit point" au bout du curseur, mais je m'en accommode.
xsetroot -cursor_name draped_box
xsetroot -cursor_name hand1
xsetroot -cursor_name hand2
xsetroot -cursor_name iron_cross
xsetroot -cursor_name left_ptr
xsetroot -cursor_name plus
xsetroot -cursor_name top_left_arrow
xsetroot -cursor_name watch
c.f. /usr/include/X11/cursorfont.h   ??? je n'ai pas trouvé chez moi.

5) Résumé des actions à faire pour la connexion locale   Top

1) Sur le serveur il suffit de le démarrer.
Tout le reste se fait depuis le client.
2) Sur le client, dans un Terminal taper : ssh bg@172.16.xxx.xxx   ou
2') Sur le client, dans un Terminal taper : ssh 172.16.xxx.xxx -l pi -p 5904
"172.16.xxx.xxx" est à adapter selon votre cas.
"-p 5904" si le port du serveur a été redirigé.
3) Tapez le mot de passe de l'utilisateur "bg" du serveur.
4) Taper : x11vnc -passwd monpassword -display :0
"monpassword" est un mot de passe de votre choix.
5) Sur le client, dans un autre Terminal, taper : gvncviewer 172.16.xxx.xxx:0
"172.16.xxx.xxx" est à adapter selon votre cas.
6) Entré le mot de passe défini ci-dessus. "monpassword" dans cet exemple.
Vous contrôlez votre serveur à distance !
°) Si le mot de passe est enregistré dans le fichier "pass.txt" :
vncviewer 172.16.xxx.xxx:0 -autopass < pass.txt
7) En tapant ssh -X bg@172.16.xxx.xxx il y a la possibilité d'exécuter des applications graphiques depuis le terminal.
Par exemple, en tapant cheese cela lance une fenêtre graphique qui montre sur votre écran ce que voit la Webcam.
Il faut avoir installé "cheese" sudo apt install cheese

Puisqu'il suffit de démarrer le serveur, sans rien faire d'autre de son côté,
il n'est donc plus nécessaire d'avoir ni un écran, ni un clavier ni une souris connectés au serveur !

6) Résumé des actions à faire pour la connexion à travers Internet   Top

1) Sur le serveur, il suffit de le démarrer.
Tout le reste se fait depuis le client.
2) Sur le client, dans un Terminal taper : ssh bg@185.3.xxx.xxx -p 5904
"185.3.xxx.xxx" est à adapter selon votre cas.
5904 est le port du Raspberry pi redirigé.
3) Tapez le mot de passe de l'utilisateur du serveur.
4) Taper : x11vnc -passwd monpassword -display :0
"monpassword" est un mot de passe de votre choix.
5) Sur le client, dans un autre Terminal, taper : gvncviewer 185.3.xxx.xxx:0
"185.3.xxx.xxx" est à adapter selon votre cas.
6) Entré le mot de passe défini ci-dessus. "monpassword" dans cet exemple.
Vous contrôlez votre serveur à distance !

7) Raspberry pi et pcduino   Top

Tout ce qui prédède est valable pour commander un Raspberry pi et un pcduino à travers un réseau.
L'un comme l'autre fera office de serveur.
Cela permet d'économiser un écran et un clavier et d'utiliser l'ordinateur que l'on a l'habitude d'utiliser.
C'est même à cause de mon Raspberry pi que j'ai commencé à m'intéresser au contrôle à distance d'un ordinateur serveur.
Documentation que j'ai écrite concernant le Raspberry pi.
Le username $USER est : "pi".
Le mot de passe par défaut est : "raspberry".

Pour le pcduino,
Le username $USER est : "linaro".
Le mot de passe par défaut est : "linaro".
Le configuer pour accepter d'être en mode serveur :
"Preferences" > "Desktop Session Settings"
V SSH Key Agent
V Norigication Daemon
V Certificate an Key Storage
V Network

Si le clavier n'est pas le bon sur le "pcduino", selon le clavier désiré, dans un Terminal taper :
sudo setxkbmap -layout us   ou
sudo setxkbmap -layout fr   ou
sudo setxkbmap -layout ch   ou
sudo setxkbmap -layout ch de   ou
sudo setxkbmap -layout ch fr
On peut stocker la commande : "setxkbmap -layout ch fr" dans le fichier "/etc/.profile", pour que le bon clavier soit automatique au démarrage.
sudo nano /etc/.profile
On peut remplacer "nano" par n'importe quel éditeur de texte. gedi, leafpad, geany, ... ou utiliser : "midnight commander" (sudo apt-get install mc).

Pour la prise de contrôle par un client, depuis un Terminal client, taper :
ssh linaro@172.16.xxx.xxx
Le numéro (172.16.xxx.xxx) ou (192.168.xxx.xxx) est celui du pcduino

Pour le mode GUI (Graphical User Interface) :
Depuis un Terminal du pcduino, taper :
x11vnc -passwd mypass -display:0
Le numéro (172.16.xxx.xxx) ou (192.168.xxx.xxx) est celui du pcduino
"mypass" est choisi par l'utilisateur et sera utile à la connexion client.

Depuis un Terminal du client, taper :
gncviewer 172.16.xxx.xxx:0   ou
gncviewer 172.16.xxx.xxx:1   ou
vncviewer 172.16.xxx.xxx:1   ou
Le numéro (172.16.xxx.xxx) ou (192.168.xxx.xxx) est celui du pcduino
Le mot de passe sera "mypass" défini ci-dessus, lors de l'établissement de la connexion vnc au niveau du serveur (pcduino).

8) SSHFS : SSH File System   Top

En plus de SFTP Secure File Transfer Protocol et de "scp", Secure CoPy, il y a d'autres manières de partager des fichiers à travers le réseaux.
J'ai fait principalament des essais en local, mais avec ce qui précède, il est facile de généraliser à des connexions à travers Internet.

Installation

Sur le serveur et sur le client, dans un Terminal, taper :
sudo apt-get update
sudo apt-get install sshfs
La première ligne met à jour la liste des dépôts de logiciels.
La deuxième ligne installe le logiciel et protocol SSHFS.
C'est probablement inutile, le logiciel est installé avec ssh.

Sur le client, dans un Terminal, taper :
sudo mkdir /mnt/deux mkdir $HOME/trois
Ceci crée chez le client un répertoire qui servira à monter un répertoire serveur.
La deuxième instruction n'a pas besoin d'être en mode superutilisateur, elle crée un répertoire client qui servira à monter en mode normal un répertoire serveur.

Cas où la connexion est locale.

Du côté du serveur, il n'y a rien à faire.

Sur le client, dans un Terminal, taper :
sudo sshfs -o allow_other bg@172.16.xxx.xxx:/ /mnt/deux
sshfs -o allow_other bg@172.16.xxx.xxx:/home/bg /home/bg/trois
"172.16.xxx.xxx" est l'adresse IP locale du serveur.
"/home/bg" est le répertoire que le serveur met à disposition du client.
"/mnt/deux" est le répertoire client qui contiendra le répertoire "/" du serveur.
La deuxième instruction n'a pas besoin d'être en mode superutilisateur.
"/home/bg/trois" est le répertoire client qui contiendra le répertoire /home/bg" du serveur.
Il se peut qu'il faille ajouter l'option -p 5904 si on a modifié le fichier "/etc/ssh/sshd_config" du serveur.
Pour chacune des instruction, il faut taper le mot de passe utilisateur du serveur.
Allez dans les répertoires "/mnt/deux" et "/home/bg/trois" et vous verrez le contenu de répertoires du serveur. On peut y faire des transfert de fichiers entre les répertoires client et serveur.

Je n'ai presque pas d'expérience, tout cela est très simple et fonctionne à travers Internet et tout ce qui transféré est crypté.
Il semble que le désavantage est que les transferts sont lents.

Pour démonter un répertoire précédemment monté, sur le client, dans un Terminal, taper :
sudo umount /mnt/deux
sudo umount /home/bg/trois
Pour les deux commandes, il faut taper le mot de passe du client.
En principe le mot de passe est mémorisé quelque temps et il ne faut le taper qu'une fois.

J'ai également modifié le fichier "/etc/fuse.conf", pour qu'il ait les lignes :
# Allow non-root users to specify the allow_other or allow_root mount options.
user_allow_other
Pour cela j'ai utilisé : sudo leafpad /etc/fuse.conf

Si on désire que le montage se fasse automatiquement au démarrage, on peut éditer le fichier client : "/etc/fstab"
sudo leafpad /etc/fstab
Il faut ajouter la ligne :
sshfs -o allow_other bg@172.16.xxx.xxx:/home/bg /home/bg/trois
Faut-il ajouter l'option "-p 5904" ?

À travers une connexion Internet public, dans un Terminal client, il suffit de taper :
sudo sshfs -o allow_other -p 5904 bg@85.3.xxx.xxx:/ /mnt/deux
"85.3.xxx.xxx" est l'adresse IP public du serveur.
"5904" est le port utilisé pour la redirection de l'IP public sur l'IP local.

Voici quelques références que j'ai utilisé pour comprendre ce que j'explique ici :
SSHF Ubuntu official documentation
How To Use SSHF to Mount Remote File Systems Over SSH.
DigitalOceanest un bon site de référence, dont le lien précédent vient.

9) NFS Network File System   Top

NFS est une autre possibilité de partager des fichiers à travers le réseau. Il est simple d'utilisation et il parraît qu'il est plus rapide que sshfs et sftp.

Installation

Sur le serveur, dans un Terminal, taper :
sudo apt-get update
sudo apt-get install nfs-kernel-server

Sur le client, dans un Terminal, taper :
sudo apt-get update
sudo apt-get install nfs-common

Sur le serveur, dans un Terminal, taper :
sudo nano /etc/exports
"nano" peut être remplacé par "gedit", "leafpad", "geany", etc.
Il faut ajouter une des lignes suivantes dans ce fichier :
/home/bg 172.16.xxx.xxx(rw,no_root_squash)   ou
/home/bg 172.16.xxx.*(rw,no_root_squash)   ou
/home/bg *(ro,insecure,all_squash)
Il y a encore beaucoup de variantes, il faut comprendre l'idée.
"/home/bg" est le répertoire du serveur que l'on désire mettre à disposition du client.
"172.16.xxx.xxx" est l'IP locale du client qui aura accès aux fichiers partagés.
Donc le serveur précise qui a accès aux fichiers qu'il partage.
"172.16.xxx.*" permet d'accepter tous les clients ayant un IP local qui commence par "172.16.xxx". On peut mettre une étoile aussi à la place des "xxx".
"rw" donne accès en lecture (Read) et en écriture (Write).
"ro" ne donne accès que en lecture (Read Only).
"no_root_squash" permet de se mettre en mode superutilisateur sur le serveur.
"all_squash" limite les droits du client.
"insecure" indique que la liaison n'est pas sûr. Je ne suis pas au claire là-dessus.
Mettre une * fait que la connexion est beaucoup plus lente au départ.

Après une modification du fichier "/etc/exports", il est bon de taper dans un Terminal du serveur :
/etc/init.d/nfs-kernel-server reload

Cas où la connexion est locale.

Pour lancer le partage, sur le serveur, dans un Terminal, taper :
sudo /etc/init.d/nfs-kernel-server start

Pour accéder au partage, sur le client, dans un Terminal, taper :
sudo mount -t nfs 172.16.xxx.xxx:/home/bg /home/bg/trois
Cela monte dans le répertoire "/home/bg/trois" du client, le répertoire "/home/bg" mis à disposition par le serveur.
Il faut que le répertoire "/home/bg/trois" existe chez le client.

Pour relancer le partage ou l'arrêter, sur le serveur, dans un Terminal, taper :
sudo /etc/init.d/nfs-kernel-server reload
sudo /etc/init.d/nfs-kernel-server restart
sudo /etc/init.d/nfs-kernel-server stop

Pour démonter le partage, sur le client, dans un Terminal, taper :
sudo umount /home/bg/trois

Suppléments

Une fois, la connexion n'a pas fonctionnée du côté du serveur.
La commande "sudo /etc/init.d/nfs-kernel-server start" sur le serveur me retournait un "... failed!".
L'erreur provenait du fait que j'avais écrit dans le fichier "/etc/exports" "/home/bg 172.16.xxx.*(rw,no_root_sqash)"
Il manque le "u". "sqash" doit être "squash" !
J'ai du donc corriger en /home/bg 172.16.xxx.*(rw,no_root_squash)

Voici quelques références que j'ai utilisé pour comprendre ce que j'explique ici :
NFS : le partage de fichier sous Unix
How To Set Up an NFS Mount on Ubuntu 14.04
exports(5) - Linux man page

10) Aide à distance à travers Internet   Top

Parfois, on désire aider un ami sur son ordinateur, sans devoir se déplacer pour aller chez lui et sans qu'il ait besoin de venir chez soit.
Dans ce cas le contrôle à distance peut être utile, mais ce qui précède n'aide pas, car c'est le client qui prend contrôle du serveur et il faut modifier des paramètres du routeur du côté serveur.

Toujour en ne modifiant le routeur que du côté serveur, comment faire en sorte d'inverser les rôles et que le serveur puisse voir l'écran du client ?
Il y a plusieurs solutions décrites ci-dessous.

Le plus simple est d'utiliser un logiciel qui fait tout le travail. Mais cela signifie que la connexion passe à travers une société et que vous ne savez pas ce qu'elle fait des données qui y transit. Souvent, cela a peu d'importance, car vos données ne sont pas sensibles, elles n'ont pas de valeurs à vos yeux.
J'ai testé les logiciels suivants, avec succès :
AnyDesk.
J'ai testé, fonctionne très bien, simple à installer et à utiliser.
TeamViewer.
Je l'ai utilisé souvent pour aider des amis, simple et bien.
Il faut généralement installé un logiciel chez la personne aidée et chez celui qui fourni son aide.
Cela marche également entre des système d'exploitations différents, tels que linux, Windows et Mac.
Gitso.
Je l'ai utilisé plusieurs fois, il fonctionne bien, il a quelques bugs. Je l'ai fait fonctionné entre un ordinateur (aidant) linux et un ordinateur (aidé) Windows XP.
Mais avec Windows 10, il bug top.
Il n'est plus maintenu.
Chaque fois que j'ai eu un problème avec ce logiciel, c'est parceque j'avais mal configuré la redirection de mon routeur.

Autres, pas testé, ou ancien, ou n'a pas fonctionné chez moi :
Skype.
Skype intègre un logiciel permettant de partager son bureau avec l'interlocuteur.
Je n'ai pas testé cette fonctionnalité.
Bureau à distance Google Chrome.
C'est une extension que l'on peut rajouter à google chrome.
Chez moi, cela n'a pas fonctionné, mais je n'ai pas insisté.
LogMeIn.
Je l'ai utilisé beaucoup autrefois, mais maintenant, il est devenu payant et cher, donc je suis passé à teamviewer, que j'utilise que très occasionnellement.
x2go.
Je ne l'ai pas testé, à l'air bien.
Join.me.
Je ne l'ai pas testé, à l'air bien.

Voici des références qui compilent des listes de logiciels de contrôle à distance :
15 screen-sharing apps for easy (and free) collaboration.
12 Excellent, Free Screen Sharing & Remote Access Tools You Haven't Heard Of Yet.
AlternativeTo Vyew.
Vyew était une possibilité de partager son écran à travers une page Web, sans rien installer du tout. N'existe plus (:-(

Utilisation de x11vnc et vncviewer en mode "reversed"

Je suppose que les installation ont été faites, comme décrit plus haut.
Je continuerai d'appeler "serveur" celui qui a du modifier les paramètres de son routeur et "client" celui qui prenait contrôle du serveur.
Mais ICI, on va inverser les rôles et c'est le serveur qui va voir l'écran du client et prendre contrôle de son ordinateur.
Cela à pour but :
° Le serveur aide la personne du côté client.
° Le serveur a la tâche compliquée de modifier des paramètres de son serveur.
° Le client se fait aidé par la personne du côté serveur, en lui montrant (partageant) l'écran de son ordinateur.

Sur le serveur (celui qui aide), dans un Terminal, taper :
vncviewer -listen 0

Sur le client (celui qui est aidé), dans un Terminal, taper :
x11vnc -connect 172.16.xxx.xxx:5500   ou
x11vnc -connect 85.3.xxx.xxx:5500
La première ligne est pour une prise de contrôle en local, pour des tests.
La deuxième ligne est pour une prise de contrôle à travers Internet.
J'ai du configurer mon modem pour rediriger le port 5500 sur l'IP locale de mon ordinateur, comme je l'ai expliqué dans la partie Configuration du modem-routeur.
Chez moi, ayant deux routeur à la suite, je dois configurer les deux routeurs !

L'avantage de cette méthode est qu'elle passe par une connexion directe, sans faire appel à une société tiers.
Elle est plus difficile à configurer au départ, ensuite, c'est très simple.
Le client, celui qui se fait aider, n'a qu'a installer le logiciel x11vnc :
sudo apt-get update
sudo apt-get install x11vnc

Pour les utilisateurs de Windows, il peuvent installer : UltraVNC.
J'ai pu le faire fonctionner depuis Windows 10, mais c'était compliqué pour moi.
J'ai du ouvrir un terminal (chercher cmd avec la loupe en bas à gauche) :
cmd
Ensuite, j'ai utilisé des bonnes vielles commandes DOS :
cd \
dir
cd "Program Files (x86)"
dir
cd "uvnc bvba"
dir
cd UltraVNC dir *.exe
winvnc -connect 85.3.xxx.xxx:5500
Les "dir" ne sont pas indispensables.
"cd Pro" suivit de la touche "Tab" complète la commande. Il faut la modifier pour ajouter le (x86).
Après le "windvnc -connect ...", la connection s'est établie.
Pour fermer la connexion depuis le "client" (celui qui se fait aider) :
winvnc -kill
c.f. UltraVNC command line parameters.
Probablement qu'il existe une méthode plus simple sous Windows, Mais je n'ai pas trouvé, ni cherché longtemps.

Voici quelques références que j'ai utilisé pour comprendre ce que j'explique ici :
HOWTO: Reverse VNC.

Top



Il existe encore SAMBA pour configurer des réseaux, mais cela m'a semblé très compliqué.
Une référence sur SAMBA


Je serai encore intéressé d'apprendre à configurer un serveur VPN (Vrirtual Private Network), à mieux étudier les avantages et à faire des tests.
c.f. OpenVPN pour l'installation
sudo apt-get install openvpn
sudo apt-get install gadmin-openvpn-server

Pour le client :
sudo apt-get install openvpn
sudo apt-get install gadmin-openvpn-server
sudo apt-get install network-manager-openvpn
Ports utilisés : 1194 en TCP et en UDP.

Voir les liens ci-dessous :
vpnMentor, des informations sur des serveurs VPN
vyprvpn
NordVPN
ExpressVPN


Plan du Site : Home   arrow   ssh_vnc_nfs.html ( = http://www.juggling.ch/gisin/ssh_vnc_nfs/ssh_vnc_nfs.html )


Page mise à jour le 22 octobre 2018 par Bernard Gisin     ( Envoyer un e-mail )
Hébergement par : www.infomaniak.ch