GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de Secure Shell (SSH) pour la connexion et la copie sécurisée (SCP) pour le transfert de données sous Linux

SSH signifie shell sécurisé. Il s'agit d'un protocole de connexion à distance crypté. Une fois configuré sur chaque nœud, il peut être utilisé pour communiquer avec divers autres nœuds de ce réseau.

Les principaux avantages de SSH sont :

  • SSH utilise l'algorithme de chiffrement RSA pour générer des clés publiques et privées, ce qui rend l'intrusion extrêmement difficile.
  • Comme SSH est un protocole de connexion à distance, il peut être configuré sur un ordinateur portable. Cela signifie que vous pouvez utiliser votre ordinateur portable pour vous connecter sans fil au cluster Raspberry Pi.
  • Étant donné que des protocoles tels que SCP (Secure Copy) et SFTP (Secure File Transfer Protocol) s'exécutent au-dessus de SSH, vous pouvez les utiliser pour transférer des fichiers et des dossiers directement d'un nœud à un autre.
  • SSH prend en charge la connexion unique. Cela signifie que vous n'avez à saisir les informations d'identification que la première fois que vous vous connectez. À partir de la deuxième connexion, ce n'est plus nécessaire.

Commençons par générer des clés SSH. Pour que le SSH soit utilisé, les clés doivent être générées entre deux nœuds ou plus afin que le transfert de données puisse avoir lieu. Nous utilisons le RSA pour le cryptage. Notez que sur un nœud, nous générons les clés et il aura les clés privées ou secrètes. Le même nœud générera également une clé publique qui sera envoyée aux autres nœuds qui souhaitent envoyer des données à ce nœud. Exécutez les commandes suivantes sur le nœud à partir duquel vous souhaitez envoyer des données. J'appelle ce nœud le "nœud maître" et les autres nœuds "nœuds de travail".

cd ~
ssh-keygen --t rsa --C "[email protected]"

Ces deux commandes définissent un emplacement par défaut de /home/pi/_ssh/id_rsa pour stocker la clé.

Si une phrase de passe vous est demandée, laissez la phrase de passe vide. Une fois cela fait, l'étape suivante consiste à envoyer les clés publiques au nœud de travail. Assurez-vous donc que le nœud de travail est connecté au réseau. Nous pouvons maintenant configurer les clés de chiffrement sur le nœud de travail, de sorte que l'adresse IP utilisée est l'adresse IP du nœud de travail. Exécutez la commande suivante sur le nœud maître.

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir .ssh;cat >> .ssh/authorized_keys"

Une fois les clés SSH générées, nous pouvons nous connecter à n'importe quel autre nœud auquel les clés ont été envoyées depuis le nœud maître et pour ce faire, utilisez la commande :

ssh [email protected]

Dans la commande ci-dessus "pi" indique l'utilisateur, par défaut tous les PI utilisant Raspbian auront l'utilisateur comme "pi" et "192.168.3.216" est l'IP de mon client. vous devrez le changer pour représenter l'adresse IP de votre PI client.

Cela demandera un mot de passe. Une fois connecté, toutes les commandes que vous tapez s'exécuteront sur ce nœud et non sur le maître, mais la sortie sera affichée sur le maître lui-même. SSH peut également être utilisé pour exécuter des commandes directement sur les autres nœuds. Par exemple, pour changer le nom d'hôte de différents nœuds, utilisez ces commandes dans un format comme ci-dessous :

ssh [email protected] 'sudo echo "cilent001" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent002" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent003" | sudo nano /etc/hostname'

Comme indiqué ci-dessus, nous pouvons utiliser SSH pour exécuter des commandes dans d'autres nœuds/PI sans réellement nous y connecter. Voici un autre exemple pour arrêter en toute sécurité un nœud du réseau avec l'adresse IP 192.168.3.216

ssh [email protected] 'sudo poweroff'

La figure suivante montre comment SSH est utilisé pour se connecter à un nœud de travail (192.168.3.216) et à partir du nœud de travail, ramener le terminal de contrôle au nœud maître.

Comme on peut le voir dans la figure ci-dessus, la connexion à un nœud de travail se fait directement, c'est-à-dire sans saisie de mot de passe, sauf pour la première fois. Mais chaque fois que le contrôle du terminal revient au nœud maître (192.168.3.215), les identifiants de connexion doivent être saisis. De cette façon, le maître est toujours protégé des menaces extérieures.

Ainsi, après avoir envoyé des commandes via SSH à d'autres nœuds, il peut y avoir des situations où les données doivent être envoyées à plusieurs nœuds. Si le nombre de nœuds est petit, nous pouvons nous connecter manuellement à chaque nœud, le connecter à un écran et un clavier, et envoyer des fichiers. Mais c'est une façon très inefficace de le faire lorsque la taille du cluster est grande. Un moyen plus simple serait d'utiliser SCP pour envoyer des fichiers. Installez SCP à l'aide de la commande :

sudo apt-get install scp

Veuillez noter que certains systèmes d'exploitation Linux peuvent être livrés avec SCP préinstallé, mais le Raspbian que nous utilisions ne l'avait pas. La commande générale pour envoyer un seul fichier est :

scp (chemin du fichier sur l'appareil local) [protégé par e-mail] (chemin de l'emplacement distant)

Exemple :

scp /pi/example.c [email protected] /pi/project

Ici, l'appareil distant auquel envoyer les données est reconnu par l'adresse IP. De nombreux fichiers d'un répertoire peuvent être envoyés à l'aide de l'option récursive (-R). Par exemple :

scp -r /pi/project [email protected] /pi/project

La commande ci-dessus transfère de manière récursive tous les fichiers du /pi/project de l'hôte local vers le dossier récursif de l'hôte distant identifié par l'adresse IP.

L'image ci-dessous illustre les différentes commandes ssh et scp. Il commence par lister le contenu de son dossier actuel, puis appelle "scp" de manière récursive pour transférer tous les fichiers du dossier actuel vers un dossier d'un autre nœud. Il se connecte ensuite à l'autre nœud et montre que le scp a réussi à transférer le contenu vers la destination.

SCP peut être utilisé avec quelques autres options pour effectuer le transfert afin de répondre à certaines de nos conditions. Voici quelques options :

    • Nous pouvons utiliser l'option "-p" pour conserver les heures de modification, les heures d'accès et les modes du fichier d'origine. Exemple :

      scp -p test.c [email protected]:~/

      Ici, l'heure d'accès, les modes d'accès et l'heure de la dernière modification du fichier "test.c" seront également conservés dans le nœud de destination.

    • SCP permet aux fichiers d'être compressés avant qu'ils ne puissent être envoyés sur le réseau vers la destination. Ceci est très utile lorsque le ou les fichiers sont très volumineux pour être transférés, et donc la compression augmentera la vitesse à laquelle il sera envoyé. Pour ce faire, nous utilisons l'option "-C". Exemple :

      scp -pC test.c [email protected]:~/

      Ici, nous pouvons voir que plusieurs options peuvent être utilisées et que leurs deux fonctionnalités seront appliquées à la commande.

    • La programmation de socket implique l'envoi et la réception de données via des ports et SCP peut être utilisé pour envoyer des données via des ports spécifiques à l'hôte distant. Cela peut être fait en utilisant l'option "-P".Exemple :

      scp -P 21938 test.c [email protected]:~/

      Ici, le port utilisé pour envoyer les données est 1938.

    • Il peut y avoir des cas où vous ne voudriez pas connaître l'état du transfert de fichiers, comme dans l'image ci-dessus. Il est logique de désactiver le statut de transfert lorsqu'il y a une grande quantité de fichiers. Nous pouvons le faire en utilisant l'option "-q". Exemple :

scp -rq ~/files [email protected]:~/files

Ici, le contenu du dossier nommé files est transféré dans le dossier files d'un autre nœud, mais la barre d'état et les messages de débogage sont tous désactivés, c'est-à-dire qu'ils ne s'affichent pas.


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

  2. Commandes Secure Shell (SSH) pour l'administration Linux.

  3. Comment transférer des fichiers sous Linux avec SCP et Rsync

  4. Comment transférer des fichiers en toute sécurité à l'aide de la commande SCP sous Linux

  5. 11 commandes "ssh" et "scp" utiles sous Linux

Tutoriel de commande Linux chsh pour les débutants (5 exemples)

Comment sauvegarder et restaurer des données à l'aide de Retic sous Linux

Comment désactiver la connexion SSH pour l'utilisateur root sous Linux ?

Formater la date et l'heure pour le script ou la variable du shell Linux

Comment configurer les clés SSH pour une connexion ssh "sans mot de passe" sous Linux

Les 8 meilleurs téléphones sécurisés Linux pour la confidentialité et la sécurité