Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/06/2021, à 00:53

kholo

[Tuto] Partage de fichiers... SFTP pour tous !!!

Bonjour à tous...
Comme je vois souvent les demandes concernant Samba, NFS et leurs soucis respectifs et n'utilisant jamais ces protocoles, et surtout, comme je dirige souvent les gens dans ma direction et que celle ci semble d'autant plus accessible qu'inconnue du grand publique, je me décide à faire un fil dédié qui reprend mes explications disséminées sur ce forum...
Pour les plus débutants... fécomsa... lisez et faites comme c'est écrit... appréciez la simplicité !
Pour montrer ces tunnels en action, j'ai fait une vidéo

SFTP (du ftp via le tunnel SSH)
Sous cette appellation de prime abord compliquée se trouve une procédure des plus simples (en tout cas sous Linux) mais des possibilités existent autant sous Windows que Mac OS... d'autant que Windows se rapproche de Linux grâce à powershell et donc d'une solution simplifiée...
je pourrais en mettre des pages mais je vais aller à l’essentiel...

Prérequis
Vous avez au moins deux machines et souhaitez passer des fichiers de l'un à l'autre voir utiliser des fichiers d'un depuis l'autre.
J'utiliserai MachineA / UtilisateurA / IPA et MachineB / UtilisateurB / IPB respectivement les machines, utilisateurs et IP.
MachineA sera un ordinateur qui partagera ses fichiers (bien sûr, il suffira d'appliquer en inversant les procédures pour avoir tous les ordinateurs autant en client que serveur).
Pour commencer nos deux machines sont sous Linux, mais j'étendrai mes explications pour les cas d'ordinateurs client svoire serveurs sous Windows... et peut être plus tard MacOS (désolé les pro Mac, mais il va falloir attendre une âme charitable ou mon bon vouloir !)

INSTALLATION
sur MachineA, ouvrez un terminal avec le raccourcis Ctrl + Alt + T (ou ouvrez un terminal depuis vos applications lol )
vous allez trouver une inscription qui ressemblera à ceci :

toto@machine:~$ 

retenez dans un coin de votre tête le nom de l'utilisateur (ici j'ai pris toto)

copier coller cette ligne pour installer openssh

sudo apt install openssh-server

Ctrl + MAJ + V pour coller (n'oubliez pas la touche Maj... Majuscule qui se trouve au dessus des Ctrl !!!)
on va vous demander le mot de passe de votre utilisateur (toto) qui va falloir taper en aveugle...
rien ne s'inscrit quand vous tapez le mot de passe, c'est normal... allez au bout puis tapez gentiment la touche "Entrer"
Voilà l'installation est finie

Paramétrer la seconde machine : MachineB
Maintenant allez sur la seconde machine : MachineB
Ouvrez un navigateur de fichier (n'importe quel dossier ira au même résultat)
Vous trouverez en bas à gauche "Autres emplacements"...
Dans le Entry à droite (le truc pour taper des choses dedans !! tongue ) à droite de "Connexion à un serveur" entrez la ligne suivante que vous allez devoir adapter...

pour les plus geeks,  a écrit :

faites juste un Ctrl + L (la lettre L) et tapez ce que je vais donner ensuite dans la barre du navigateur :

sftp://utilisateur@Ipserveur/point/de/montage


utilisateur est le nom de l'utilisateur sur lequel vous voulez vous connecter sur la MachineA (vous vous rappelez de toto un peu plus haut ?)
Ipserveur est l'IP de MachineA (j'y reviens juste après !)
/point/de/montage est un point de montage qui part de la racine / laissez juste / si vous vous sentez perdus !
vous devez vous retrouver avec une ligne comme ça

sftp://toto@192.168.1.102/home/toto

ou plus simplement :

sftp://toto@192.168.1.102/

c'est quoi l'IP de mon Ubuntu ?
ouvrez un terminal et tapez :

hostname -I

ou

ip a

l'IP sera certainement de cette forme : 192.168.x.y où x et y sont également des nombres
par exemple : 192.168.1.11 ou 192.168.0.102
NB : Il peut arriver que vous ayez des choses plus exotiques comme 10.x.y.z voire 172.x.y.z
vous trouverez également cette information dans les propriétés de votre connexion réseau...

On se connecte ?
connectez vous... juste à valider votre saisie !
A la première connexion une fenêtre d'information vous demandera de valider et que vous savez ce que vous faites...
vous ne le savez peut être pas encore, mais vous pouvez valider !!!

Maintenant vous devez être devant les fichiers de votre serveur (MachineA) sur votre Machine B.
Comme vous n'allez pas retenir ni la procédure, ni l'adresse IP, ni quoi que ce soit d'autre, faites un Ctrl + D pour ajouter cette adresse à vos favoris de notre navigateur de fichiers. Il apparaîtra à gauche de votre navigateur dans la partie basse. Vous pouvez le renommer en faisant un clic droit dessus (choisissez un nom compréhensible pour vous !).
Vous remarquerez qu'il y a 2 lignes qui semblent pointer vers MachineA. Celle du bas est le raccourcis, celle du haut vous indique que vous êtes connecté (on dira monté) et comporte un petit bouton d'éjection comme une cassette, un CD ou je ne sais quoi d'autre qui s'éjecte !

Pour vous déconnecter, cliquez simplement dessus !

Comment ça marche ?
Vous êtes connecté dans MachineB au système de fichiers de MachineA de la même façon que vous pourriez le faire avec une clé USB ou un disque externe...
Vous allez pouvoir copier, déplacer des fichiers, des dossiers, mais également ouvrir des fichiers qui se trouvent sur A depuis B...
Votre réseau local et la vitesse de votre réseau ainsi que son encombrement vont définir la vitesse à laquelle vous pouvez escompter travailler...

maintenant les plus novices peuvent arrêter la lecture... pour les autres, je continue...
***************************************************************************************
Aller plus loin...

ssh...
le but de ssh est de créer un tunnel
on peut facilement l'utiliser pour lancer une mise à jour sur une machine distante :

ssh utilisateur@IPserveur

puis

sudo apt update && sudo apt upgrade

mot de passe comme d'habitude sauf si vous avez installé des clés... et tout tintouin...

déport graphique
ssh ne permet pas que de déporter des systèmes de fichiers ou des lignes de code mais également des applications.
démonstration :
ouvrez un terminal puis connectez vous ainsi :

ssh -X utilisateur@IPserveur

NB le -X pour le déport graphique
mot de passe comme d'habitude sauf si vous avez installé des clés...
vous êtes devant le prompt d'utilisateur de MachineA ; lancez une application graphique...
je vais choisir gedit...

gedit

celui ci s'ouvre mais ce n'est pas celui de MachineB mais celui de MachineA.
Pour vous en rendre compte, allez dans fichier / ouvrir...
comprenez bien que nous n'avons déporté que la partie graphique...
si j'ouvre un film ainsi dans VLC par exemple, la vidéo sera déportée mais le son sortira de ma machine distante !!!

Les clés
Votre système sait très bien retenir les mots de passe mais on peut utiliser un ensemble de clés pour ne plus tout à avoir à les retaper... comme ça semblait hardu, j'ai mis du temps à m'y mettre mais finalement voici comment je résume la procédure

1.créer une clé sur le poste client

ssh-keygen -t rsa

il sera demandé où mettre la clé /home/nom_utilisateur/.ssh/id_rsa_XXX
puis il faudra taper 2 fois une passphrase dite mot de passe VNC
la clé publique sera un fichier .pub du même nom que id_rsa_XXX

2.copier la clé sur le serveur

ssh-copy-id -i ~/.ssh/id_rsa_XXX.pub utilisateur_distant@IPserveur

3.se connecter une première fois pour valider et vérifier

ssh utilisateur_distant@IPserveur

si tout fonctionne plus besoin de mot de passe pour se connecter

Mr.CassePieds a écrit :

Salut.
Pour la génération de clés : il vaut mieux 4096 bits et plus pour RSA ou sinon il y a un autre standard qui est Ed25519 encore plus sécurisé.

ssh-keygen -t rsa -b 4096 -m PEM

-m PEM pas obligatoire, juste une option supplémentaire pour une compatibilité avec certains client android.

ssh-keygen -t ed22519

Et pour les clients Linux, il y a SSHFS.

sshfs -o IdentityFile=<fichier_de_clé>,default_permissions,reconnect user@serveur:/home/user/ <point-de-montage>

à démonter avec

umount <point-de-montage>

ça ne marche plus
il arrive qu'au détour de pas mal de modifications, la connexion ne veuille plus se faire...
soit l'adresse IP de MachineB a changé et dans ce cas il faut soit passer B en IP fixe, soit refaire une procédure de connexion à la nouvelle adresse...
soit l'association des clés / adresses Mac s'embrouille parce que vous utilisez plusieurs PC avec la même clé wifi par exemple...
dans ce cas connectez vous simplement ne ligne de commande et vous allez voir apparaître un placard décrivant l'erreur...
dans cette explication se trouvera une ligne donnant la procédure pour annuler l'association

bla bla bla...
ssh-keygen -f "/home/toto/.ssh/known_hosts" -R XXX.XXX.XXX.XXX
bla bla bla

où XXX.XXX.XXX.XXX est l'adresse IP de MachineB
copiez cette ligne et appliquez là puis reconnectez vous simplement...

Windows et confrères et sœurs !!!
Il existe des solutions pour faire la même chose sur Windows mais ça ressemble à un client ftp

sous XP j'avais un truc (dokan) qui faisait très bien du mapping mais plus fonctionnel ensuite
depuis ils ont refait un exe (lien non direct vers page de l'exe v0.7.4) qui marche avec certains Windows récents mais je ne sais pas trop où ils en sont... (si c'est comme XP, c'est le panard !)

j'ai testé Swish mais j'aime pas !
le fichier est copié en local (et je n'ai pas encore trouvé les bons réglages peut être)

inversement il y a filezilla server pour partager depuis windows

pour MacOS, j'ai rechercher avec sftp et du coup ça ouvre encore d'autres solutions :
j'ai trouvé cyberduck qui fonctionne aussi avec Windows et cette page réponds bien plus en profondeur que moi

Filezilla
on peut installer le client filezilla sur Windows et le serveur sftp (ftp via ssh) sur Ubuntu
une seule ligne suffit sur ubuntu :
on ouvre un terminal avec Ctrl + Alt + t (la lettre T) puis

sudo apt install openssh-server

Sur Windows, installation du client
ensuite, en haut à gauche, clic sur la première icône
puis le bouton "nouveau site" en bas à gauche
on donne un nom... Mon Ubuntu (par exemple)

à droite, à renseigner :
protocole : sftp...
Hote : l'adresse IP de Ubuntu récupérée précédemment wink
laisser le port vide ou mettre 22 (qui sera pris de toute façon par défaut)
type d'authentification : normale
identifiant : le nom de ton utilisateur sous Ubuntu (toto dans mon exemple)
mot de passe : le mot de passe de toto
puis le bouton "Valider" en bas à droite

Puis en haut à gauche mais pas sur l’icône mais sur la petite flèche
... et voilà !!!
chaque fois pour se connecter, juste à cliquer sur la petite flèche et choisir "Mon Ubuntu"
pour utiliser :
à gauche Windows, à droite, Ubuntu !!!
le drag and drop fonctionne depuis Explorer (le navigateur de fichiers de Windows !)

NB : cette partie est à terminer...
Windows en serveur
Windows peut être serveur avec le serveur de filezilla
j'ai pas l'installation en tête mais c'est très intuitif (d'autant que je me souvienne !)
et on se connecte avec Ubuntu en client...
dans le navigateur de fichiers :
ctrl + L
puis la même ligne que précédemment :

sftp://utilisateur@IP/point/de/montage

ou juste

sftp://utilisateur@IP

(utilisateur de Windows et IP de ta machine Windows)
l'IP de Windows se retrouve dans les propriétés réseau ou via la ligne de commande avec

ipconfig /all

Dernière modification par kholo (Le 10/06/2021, à 18:32)

Hors ligne

#2 Le 08/06/2021, à 00:55

kholo

Re : [Tuto] Partage de fichiers... SFTP pour tous !!!

réservé... pour powershell...
lien 1...
lien 2...

Hors ligne

#3 Le 10/06/2021, à 06:46

Mr.CassePieds

Re : [Tuto] Partage de fichiers... SFTP pour tous !!!

Salut.
Pour la génération de clés : il vaut mieux 4096 bits et plus pour RSA ou sinon il y a un autre standard qui est Ed25519 encore plus sécurisé.

ssh-keygen -t rsa -b 4096 -m PEM

-m PEM pas obligatoire, juste une option supplémentaire pour une compatibilité avec certains client android.

ssh-keygen -t ed22519

Et pour les clients Linux, il y a SSHFS.

sshfs -o IdentityFile=<fichier_de_clé>,default_permissions,reconnect user@serveur:/home/user/ <point-de-montage>

à démonter avec

umount <point-de-montage>

Hors ligne