Le Protocole SSH : Prise en main, Configuration et Sécurité - Partie 2

Publié le 26 Novembre 2024 à 12:26 par BlueSpirit
Administration Systèmes
...

Salut les amis ! Dans la série sur SSH que nous avons débuté, nous avons vu comment installer SSH sur différents OS. Aujourd'hui nous apprendrons les commandes de base de l'utilisation de SSH
3-Connexion en SSH
Pour se connecter en SSH à une machine distante , il faut savoir qu’il y a deux méthodes de connexion :
-La connexion par mot de passe et
-La connexion par clé publique/ clé privée
3-1La connexion par mot de passe
Supposons que nous disposons de deux machines A et B ayant chacune SSH installé. Nous voulons maintenant nous connecter à la machine B à partir de A. Nous ouvrons donc un terminal sur la machine A et nous entrons la commande suivante :
ssh -l nom_d’utilisateur IP_de_la_machineB
ou bien
ssh nom_d’utilisateur@IP_de_la_machineB
Ici, nom_d’utilisateur désigne le compte utilisateur de la machine B sur lequel nous voulons nous connecter
IP_de_la_machineB désigne l’adresse IP de la machine B
Cas Pratique
Nous disposons maintenant des informations requises pour initier notre connexion en SSH à la machine B


Miniature Image

Pour nous connecter à B, nous ferons donc sur la machine A :

ssh -l orson2 192.168.145.145

ou bien

ssh  orson2@192.168.145.145

Si c’est la première fois qu’on se connecte à B, ssh nous demandera une confirmation; confirmation à laquelle on répond par un « yes ».
Ensuite , il nous sera demandé de saisir le mot de passe associé au compte utilisateur auquel nous voulons nous connecter. Et hop ! Nous venons d’établir une connexion SSH à la machine B !
3-1La connexion par clé publique / clé privée
Cette méthode est utilisée pour se connecter à distance à une machine sans avoir à entrer le mot de passe du compte utilisateur distant . Elle offre une sécurité supplémentaire du point de vue de son fonctionnement. Toutes les machines qui veulent utiliser ce type d’authentification doivent disposer d’une clé privée et d’une clé publique


Miniature Image

Nous voulons connecter la machine A à la machine B. Le processus de connexion se déroule comme suit :
-Tout d’abord, il faut que la clé publique de A soit enregistrée sur la machine B dans le fichier authorized_keys qui se trouve dans le répertoire .ssh du répertoire personnel du compte utilisateur de B. Le chemin absolu vers ce fichier est donc /home/nom_d’utilisateur/.ssh/authorized_keys.
Pour effectuer cet enregistrement on peut envoyer la clé publique de A vers B par différent moyens, l’essentiel c’est que l’on retrouve la clé publique de A dans le fichier authorized_keys de B. Nous verrons plus tard une commande spécifique pour effectuer cet enregistrement.
-Une fois la clé publique de A présente dans le fichier authorized_keys de B, la machine A pourra utiliser sa clé privée pour se connecter à la machine B selon la syntaxe suivante :
ssh -i chemin_absolu_de_la_clé_privée_de_A nom_d’utilisateurB@IP_de_la_machineB
Cas pratique
Nous voulons connecter la machine A à la machine B tel que présenté dans le fonctionnement de l’authentification par clé privée / clé publique mais les clés privée et publique comment les obtient-on ? Eh bien, on les génère …
Nous générons donc pour A les clés privée et publique avec la commande suivante :

ssh-keygen -b 2048 -t rsa

Avec cette commande nous avons spécifié à ssh-keygen que nous voulons générer les clés privée et publique sur 2048 bits et chiffrées avec l’algorithme d’encryption rsa.
En exécutant la commande, il nous est demandé à la suite de spécifier le fichier dans lequel nous voulons stocker notre clé privée. Ici, je vous conseille de taper Entrée pour stocker la clé privée dans le fichier par défaut qui est id_rsa
Ensuite, il nous est demandé de saisir une passphrase pour sécuriser notre clé privée (La passphrase nous sera demandée comme sécurité supplémentaire lorsque nous tenterons de nous connecter à la machine B avec notre clé privée)
Et voilà ! Nous avons nos clés privée et publique générées et stockées dans les fichiers id_rsa (clé privée) et id_rsa.pub (clé publique)
Maintenant que nous venons de générer les clés privée et publique de A . Il va nous falloir copier la clé publique de A dans le fichier  de B. Pour le faire, nous pouvons ouvrir le contenu du fichier id_rsa.pub de A, le copier et l’envoyer par mail (par exemple) à la machine B. Ensuite sur la machine B, on copie et colle ce qui a été envoyé par A dans le fichier authorized_keys (fichier se trouvant dans le répertoire .ssh du répertoire personnel de l’utilisateur auquel on désire se connecter sur B) de B. On enregistre ce qu’on a collé et le tour est joué !
Si nous voulons copier la clé publique de A directement dans le fichier authorized_keys de B, nous pouvons aussi utiliser la commande suivante mais elle nécessite la connexion par mot de passe :
ssh-copy-id -i chemin_absolu_vers_la_clé_publique_de_A nom_d’utilisateurB@IP_de_la_machineB
Cela donnera donc :

ssh-copy-id -i /home/orson/.ssh/id_rsa.pub orson2@192.168.145.145

Nous avons désormais notre clé publique présente sur B. A peut maintenant se connecter en utilisant sa clé privée à B :

sudo ssh -i /home/orson/.ssh/id_rsa orson2@192.168.145.145

On saisit la passphrase que l’on avait défini précédemment pour notre clé privée et hop nous voilà connecté à la machine B en SSH !
N.B: J’ai utilisé un sudo dans la commande précédente car il se peut que sur A l’utilisateur en cours n’ait pas tous les droits requis pour se servir de la clé privée.
4-Astuces d’utilisation de SSH
4-1 Accéder directement à un répertoire distant en une seule commande
Si en me connectant en SSH de la machine A vers B, je souhaite accéder à un répertoire sur la machine B, au lieu de me connecter à B et naviguer manuellement vers ce répertoire je peux utiliser directement la commande suivante :
ssh -t nom_d’utilisateurB@IP_de_la_machineB "cd chemin_absolu_du_répertoire ; bash "
Supposons que je veuille accéder au dossier /home/orson2/Téléchargements se trouvant sur la machine B à partir de A. Je ferai donc :

ssh -t orson2@192.168.145.145 "cd /home/orson2/Téléchargements ; bash"

Et hop ! Lorsque je me connecte je me retrouve directement dans le répertoire voulu !
4-2 Exécuter à distance une commande sur une machine
Si je veux exécuter une commande sur la machine B à partir de A sans pour autant avoir à ouvrir un shell sur cette dernière, je lance la commande à distance de cette manière :
ssh nom_d’utilisateurB@IP_de_la_machineB "commande_a_exécuter"
Supposons que je veuille créer un répertoire /home/orson2/repertoire1 sur la machine B à partir de A. Je ferai donc :

ssh orson2@192.168.145.145 "mkdir /home/orson2/repertoire1"

Et hop ! Mon répertoire /home/orson2/repertoire1 sera créé sur la machine B !
4-3 Utilisation de scp
L’utilitaire scp est un outil qui permet en se servant de SSH de copier des fichiers et des répertoires d’une machine A à une autre machine B et vice-versa.
Supposons que nous disposons de deux machines A et B. Sur les deux machines se trouvent les éléments suivants :
-Machine A : Fichier1, Repertoire1
-Machine B : Fichier2, Reperoire2
*Copie des fichiers et répertoires présents sur A vers B
Pour copier un fichier d’une machine A vers B avec scp, la copie se fait selon la syntaxe suivante :
scp chemin_absolu_vers_fichier_de_A nom_d’utilisateurB@IP_de_la_machineB:chemin_absolu_de_destination_sur_B
En pratique, nous voulons envoyer le fichier Fichier1 de A vers B. Cela donne donc

scp /home/orson/Fichier1 orson2@192.168.145.145:/home/orson2

Pour copier un répertoire d’une machine A vers B avec scp, la copie se fait selon la syntaxe suivante :
scp -r chemin_absolu_vers_repertoire_de_A nom_d’utilisateurB@IP_de_la_machineB:chemin_absolu_de_destination_sur_B
En pratique, nous voulons envoyer le répertoire Repertoire1 de A vers B. Cela donne donc

scp -r /home/orson/Repertoire1 orson2@192.168.145.145:/home/orson2

*Copie des fichiers et répertoires présents sur B vers A
Pour copier un fichier d’une machine B vers A avec scp, la copie se fait selon la syntaxe suivante :
scp nom_d’utilisateurB@IP_de_la_machineB:chemin_absolu_du_fichier_sur_B chemin_absolu_vers_destination_sur_A
En pratique, nous voulons récupérer le fichier Fichier2 de B vers A. Cela donne donc

scp orson2@192.168.145.145:/home/orson2/Fichier2 /home/orson

Pour copier un répertoire d’une machine B vers A avec scp, la copie se fait selon la syntaxe suivante :
scp -r nom_d’utilisateurB@IP_de_la_machineB:chemin_absolu_du_repertoire_sur_B chemin_absolu_vers_destination_sur_A
En pratique, nous voulons récupérer le répertoire Repertoire2 de B vers A. Cela donne donc

scp -r orson2@192.168.145.145:/home/orson2/Repertoire2 /home/orson



RECHERCHE
DERNIERS ARTICLES
ANNONCES
RESSOURCES UTILES