GNU/Linux >> Tutoriels Linux >  >> Linux

Comment connecter et partager des données entre deux systèmes Linux

J'ai reçu une demande intéressante (pas de célibataires de ma région). Un de mes lecteurs m'a demandé comment connecter deux machines Linux - je suppose à des fins de partage. C'est un sujet que j'ai abordé fréquemment, mais souvent indirectement. Comme le dirait le commandant Lasard de l'Académie de police, il existe de très nombreuses façons de procéder.

Alors peut-être qu'il est temps pour un bon tutoriel. Je vais vous montrer plusieurs façons courantes et robustes de faire communiquer deux systèmes Linux sur le réseau. Nous le ferons sur la ligne de commande, puis passerons aux gestionnaires de fichiers, et enfin, effectuerons également une sauvegarde des données à distance à l'aide d'un outil graphique convivial. Commençons.

Ligne de commande :SSH, SCP

Le moyen "le plus simple" de connecter deux systèmes Linux consiste à utiliser le protocole SSH. C'est pratique, sécurisé et disponible sur pratiquement tous les systèmes Linux. Maintenant, dans certains cas éloignés [sic], il pourrait y avoir des problèmes d'interopérabilité dus à des versions incompatibles de logiciels ici et là, mais dans l'ensemble, vous ne devriez pas avoir de problèmes.

Un hôte agit comme un serveur (ouvre le port TCP 22 par défaut). L'autre agit en tant que client. Vous pouvez utiliser l'utilitaire de ligne de commande SSH pour établir une connexion au serveur et même y exécuter des commandes, à distance comme en local, y compris des tâches administratives (à condition d'avoir les bonnes autorisations). Ou vous pouvez utiliser SCP pour copier en toute sécurité des fichiers du client vers le serveur, ou même récupérer des fichiers des serveurs vers votre hôte client.

Configuration du serveur SSH

Je vais faire la démonstration avec un serveur Fedora 32 et un client Kubuntu 18.04. Tout d'abord, nous devons installer et configurer le logiciel de service SSH. Bien que les instructions puissent légèrement varier d'une distribution à l'autre, en grande partie, ce que vous voyez ici est à peu près tout ce dont vous avez besoin. La seule différence notable est le nom du package utilisé pour identifier le serveur SSH - dans Fedora, il s'agit de openssh-server. Si vous recherchez un sshd existant (démon ssh =service), vous n'obtiendrez vraiment rien.

Aucune correspondance pour l'argument :sshd
Erreur :Impossible de trouver une correspondance :sshd

sudo dnf search ssh
...
openssh-ldap.x86_64 :Un support LDAP pour le démon serveur SSH open source
openssh-server.x86_64 :Un démon serveur SSH open source
openssh.x86_64 :Une implémentation open source du protocole SSH version 2

Une fois que openssh-server est installé, vous pouvez démarrer le service. En règle générale, il s'exécutera au démarrage par défaut, mais vous pouvez également toujours le démarrer ou le redémarrer manuellement (via la commande ou le script du service de démarrage), cependant, il ne s'exécutera pas s'il n'a pas de clés SSH (par lesquelles l'hôte peuvent être identifiés de manière unique).

sshd
la réexécution de sshd nécessite une exécution avec un chemin absolu

/usr/sbin/sshd
/etc/ssh/sshd_config :autorisation refusée

sudo /usr/sbin/sshd
sshd :aucune clé d'hôte disponible -- sortie.

Nous devons générer les hostkeys :

sudo ssh-keygen -A
ssh-keygen :génération de nouvelles clés d'hôte :RSA DSA ECDSA ED25519

Et maintenant, openssh-server va s'exécuter :

sudo /usr/sbin/sshd

ps -ef|grep ssh
roger 1832 1791 0 15:03 ? 00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/gnome-session"
root 3640 1675 0 15:17 ? 00:00:00 sshd :/usr/sbin/sshd [auditeur] 0 démarrage sur 10-100

Configuration du réseau

Je vais vous montrer comment connecter deux boîtiers sur un réseau local. Thermes et conditions d'application. Vous aurez besoin que les deux hôtes soient joignables (pare-feu et autres). L'ouverture d'un port réseau peut avoir des implications sur la sécurité - moins sur le réseau local, mais plus sur les réseaux publics, comme Internetz. Cependant, je ne suis pas ici pour discuter de la sécurité de votre matériel, simplement pour vous montrer comment connecter deux boîtiers, dans votre configuration LAN. Cependant, pour les plus curieux, vous pouvez renforcer SSH, y compris l'accès non root, l'utilisation du port non par défaut, la limitation de connexion, diverses autres restrictions, etc.

Maintenant, notez l'adresse IP ou le nom d'hôte de votre machine serveur Linux. Sur les distributions "modernes", trouver l'adresse IP n'est pas trivial, car netstat et ifconfig ne sont plus cool, mais cela peut être fait. Nous en aurons besoin pour la partie client de la connectivité.

Ligne de commande :SSH, SCP (suite)

Sur le client, connectez-vous à votre serveur. La syntaxe sera la suivante :

ssh nom d'utilisateur@nom d'hôte

Donc, pratiquement, dans mon exemple, c'est - notez l'avertissement de première connexion :

ssh [email protected]
L'authenticité de l'hôte '192.168.2.107 (192.168.2.107)' ne peut pas être établie.
L'empreinte digitale de la clé ECDSA est SHA256:8Qk//cbC0v3BLuU1FQ/vjABNN34nw1sWANY+hoycHiE.
Êtes-vous sûr de vouloir continuer à vous connecter (oui/non) ? oui
Attention :Ajout permanent de '192.168.2.107' (ECDSA) à la liste des hôtes connus.
Mot de passe de [email protected] :
Dernière connexion :jeu 17 sept. 15:03:38 2020

Maintenant, vous êtes "in" - vous pouvez maintenant faire des choses sur votre serveur. Mais nous voulons aussi pouvoir copier des données dans un sens et dans l'autre. Utilisons SCP alors. La syntaxe sera la suivante :

scp source username@hostname:destination

La commande scp prend également divers arguments utiles - vous pouvez parcourir les dossiers, conserver les autorisations, vous connecter à un port autre que celui par défaut, etc. Fait intéressant, peut-être ironiquement, ssh utilise un p minuscule pour spécifier le port (par exemple :-p 2222), tandis que scp utilise un p majuscule (par exemple :-P 2223). Avec scp, le p minuscule est utilisé pour préserver les modes et les heures des fichiers d'origine. Voilà.

scp -r /home/igor/Wallpapers/ [email protected]:/home/roger/Pictures/
mot de passe de [email protected] :
wallhaven-156819.jpg 100% 166KB 500.8KB /s 00:00
wallhaven-448391.jpg 100% 1606KB 3.0MB/s 00:00
wallhaven-12679.jpg 100% 501KB 5.4MB/s 00:00
...

Dans l'exemple ci-dessus, nous copions récursivement le contenu du répertoire Fonds d'écran dans le dossier Images de notre serveur. Vous pouvez toujours inverser le sens du flux de données (source, destination).

Connectivité SSH, SCP sans surveillance

Comme vous l'avez peut-être noté ci-dessus, dans mon exemple, on m'a demandé un mot de passe. C'est bon pour le travail interactif, mais cela peut être fastidieux si vous souhaitez exécuter des sauvegardes sans surveillance, comme des tâches planifiées pendant la nuit. Pour cela, vous devrez configurer la paire de clés publique-privée SSH. Le tutoriel lié l'explique bien.

Ligne de commande :rsync

Les cas d'utilisation les plus évidents pour la connectivité entre deux hôtes sont à des fins de sauvegarde de données. Par exemple, vous souhaitez copier le répertoire personnel de votre poste de travail sur un serveur d'archives. En ce qui concerne les sauvegardes, rsync est un excellent outil pour le travail. Mieux encore, vous avez déjà un guide de votre auteur significatif, qui explique comment utiliser rsync pour configurer les sauvegardes de données.

Nous devons introduire le composant SSH dans l'équation. Rsync prend en charge SSH de manière transparente. En d'autres termes, tout reste le même, sauf la façon dont vous définissez la destination. La syntaxe SSH/SCP à la rescousse :

rsync source username@hostname:destination

Par exemple :

rsync -avs --delete -i -h /home/igor/Wallpapers/ [email protected]:/home/roger/Pictures
mot de passe de [email protected] :
envoi d'une liste de fichiers incrémentielle
*suppression Screenshot_20200516-125442.png
*suppression Screenshot_20200516-125302.png
*suppression Screenshot_20200516-125252.png
...
*suppression QEMU Virgil.txt
*suppression de Fedora 32.txt
.d..tp..... ./

envoyé 11,16M octets reçu 7,94K octets 2,03M octets/sec
la taille totale est de 11,15M l'accélération est de 1,00

Encore une fois, nous avons besoin de clés pour une connectivité transparente.

Connectivité graphique :gestionnaire de fichiers Dolphin

Comme je l'ai dit, il existe de nombreuses façons de le faire. Je vais faire une démonstration avec Dolphin, le gestionnaire de fichiers par défaut du bureau Plasma. Il prend en charge nativement la connectivité SSH, vous pouvez donc faire ce que nous avons fait précédemment, sauf que vous le faites maintenant via l'interface graphique plutôt que sur la ligne de commande. Je consacrerai un article séparé aux détails plus fins de l'utilisation de Dolphin et SSH, donc pour l'instant, voici une version abrégée.

Dolphin utilise le protocole FISH pour établir une connexion avec des hôtes distants. Dans Dolphin, appuyez sur Ctrl + L ou double-cliquez sur la ligne de localisation pour afficher la barre d'adresse, puis écrivez :

poisson://nom d'utilisateur@destination

Dolphin vous demandera maintenant un mot de passe - que vous pouvez enregistrer, et c'est tout. Vous êtes connecté à l'hôte distant et vous pouvez effectuer n'importe quelle opération de fichier (dans les limites des autorisations SSH dont dispose votre utilisateur et que le serveur autorise).

Sauvegarde de l'interface graphique :Grsync

Nous en avons déjà parlé. Grsync est un excellent utilitaire frontal rsync - mon préféré. Vous pouvez l'utiliser pour définir une ou plusieurs tâches de réplication de données, y compris diverses options et exclusions. Dans la ligne de destination, vous devez insérer l'entrée username@hostname:destination, comme vous le feriez avec rsync dans une fenêtre de terminal.

Vous pouvez ensuite simuler (exécuter à sec) l'opération, ou vous connecter pour de vrai - avec le bonus supplémentaire que vous pouvez enregistrer les informations d'identification de connexion, de sorte que vous pouvez réexécuter la tâche sans avoir à vous authentifier à nouveau manuellement. Parfait pour les tâches de sauvegarde de données planifiées.

Conclusion

Eh bien, voilà. Vous avez maintenant quatre façons différentes de connecter vos machines Linux, y compris les méthodes de ligne de commande et d'interface graphique, l'authentification avec et sans mot de passe, les sauvegardes de données, etc. Dans les coulisses, tout est SSH, mais c'est vraiment la beauté de celui-ci.

J'espère que vous trouverez cet article utile et pratique. Si vous voulez vous assurer que vos box Linux se parlent de manière transparente, vous avez les outils pour être votre propre patron. Pour ceux qui sont à l'aise avec la ligne de commande, ssh, scp et rsync font le travail, mais si vous préférez une simple action pointer-cliquer de la souris, Dolphin et Grsync offrent les fonctionnalités nécessaires. Maintenant, la liste ne s'arrête pas là. Vous pouvez également utiliser FTP, SFTP - ou un programme comme wormhole, et certains autres gestionnaires de fichiers Linux offrent également des fonctionnalités SSH et Rsync, mais c'est vraiment un sujet pour un autre article. Et ce serait tout pour aujourd'hui.


Linux
  1. Établir une connexion SSH entre Windows et Linux

  2. Comment transférer des fichiers entre deux ordinateurs à l'aide des commandes nc et pv

  3. Linux - Comment basculer entre les sessions Tty et Xorg ?

  4. Linux - Partager des fichiers entre l'hôte Linux et l'invité Windows ?

  5. Comment se connecter et envoyer des données à un port série Bluetooth sous Linux ?

Comment me connecter à Linux VPS via SSH depuis Linux et Windows OS ?

Comment générer et utiliser la clé SSH dans le système Linux ?

Comment ajouter une clé SSH au code VS et se connecter à un hôte

Comment configurer Synergy sur Linux pour partager le clavier et la souris avec plusieurs systèmes

Comment partager un fichier entre Ubuntu et Windows 10 ?

Comment installer, configurer et activer le service SSH sous Linux