Vous êtes sur la page 1sur 21

Architectures Cloud

SSH
Introduction
Secure shell (1/2)
Contrairement à ce que laisserait penser son nom, le SSH n’est pas un
shell per sei.

Le ssh est un système de connexion sécurisé au shell d’une autre


machine. Sécurisé signifie que les données qui transitent entre les
deux machines sont chiffrées.
Secure shell (2/2)
Il faut différencier le serveur ssh du client ssh.

Le client ssh est celui qui permet de lancer une connexion vers une
machine distante. Il utilise la commande `ssh`.

Le serveur ssh est celui qui permet la connexion à votre machine à


partir d’une autre machine distante. Il utilise la commande `sshd`.
Connexion simple
Connexion simple (1/2)
Pour se connecter à une machine distante, il faut utiliser la commande:
$ ssh ip|nom_machine
Par exemple:
$ ssh serveur_hetic

Lors de la connexion avec la commande précédente, le ssh considère que l’authentification à la


machine distante se fait avec le même compte que celui de la machine qui demande
l’authentification.
Par exemple: Si l’utilisateur ‘toto’ tape la commande `ssh serveur_hetic`, alors serveur_hetic
tentera de le connecter avec le compte ‘toto’.
Connexion simple (2/2)
Il est possible de préciser l’utilisateur avec lequel on souhaite se
connecter. La commande devient donc :
$ ssh user@machine ou $ ssh -l user machine

Suivant la configuration de votre serveur ssh, un mot de passe pourra


être demandé lors de la connexion.
Ca marche pas ???
• « Connection Refused » « Host is Down » etc …`
• Cela signifie que : C’est un problème Réseau (nom d’hote mal tapé)
• Erreur de mot de passe :
• Login est-il bien saisi ? Majuscule / Minuscules

Objectif : Se connecter a distance sur un serveur


ssh login@nom_de_machine
Exemple : ssh Nicolas.FOESSEL@hetic.arcplex.fr

Une fois connecté :


passwd : changer le mot de passe
bash : pour lancer le shell bash
Types d’authentifications
Connexion par mot de passe
Par défaut, le serveur OpenSSH prend en charge les connexions par mot de passe.
Si une connexion par mot de passe est engagée, le serveur ssh demandera le mot
de passe du compte sur celui-ci.

Par exemple, si le compte ’toto’ existe sur la machine cliente avec le mot de passe
‘test’ et sur le serveur avec le mot de passe ‘titi’, lorsque l’utililisateur tentera une
connexion sur le serveur avec le compte toto, il devra renseigner le mot de passe
‘titi’.
Connexion par ssh-agent (1/2)
ssh-agent est un outil de connexion par clé RSA. Son fonctionnement est basé sur les
clés public et privée.

Cette connexion évite de devoir taper le mot de passe à chaque connexion. Il peut
cependant être demandé une passphrase à la connexion, suivant la génération de la
clé RSA.

Il est possible, sur le serveur ssh, de configurer la connexion pour n’accepter que les
connexions par ssh-agent (plus sécurisées).
Chiffrement symétrique ou asymétrique
• Symétrique : la même clé pour chiffrer et déchiffrer un message

• Asymétrique : une clé différente pour chiffrer et déchiffrer

• Objectif : Je peux diffuser de ma clé de chiffrement pour échanger avec moi,


je conserve la clé de déchiffrement pour lire les messages qui me sont
envoyés.
Dans le contexte du SSH
• On va disposer coté client d’un couple de clé :
• Privé
• Publique

• On va aller déposer sur le serveur notre clé publique


Connexion par ssh-agent (2/2)
Pour activer une connexion par ssh-agent, il faut:
• Génération d’une paire de clés publique/privée RSA (machine cliente):
$ ssh-keygen
• Copier la clé publique (~/.ssh/name.pub) de la machine cliente dans
les clés autorisées sur la machine serveur (~/.ssh/authorized_keys)
Il faudra vérifier que les droits sont bien à 0700 sur les répertoires
~/.ssh des deux machines et à 0600 sur les clés privées.
La recette
• Est-ce que j’ai déjà une clé ?
• ~/.ssh/id_rsa (clé privé)
• ~/.ssh/id_rsa.pub (clé publique)
• Si je ne l’ai pas, alors ssh-keygen pour la créer

• Une fois que j’ai ma clé, sur le serveur DISTANT :


• Dans le fichier ~/.ssh/authorized_keys je vais copier le contenu de ma clé publique

ssh login@server (ssh -i nom_de_la_clé login@server si différent de id_rsa)

Pour tester : mettre en place l’authentification par clé avec le serveur


Exercice complet
• Sur le serveur distant filtrer /var/log/apache2/access.log
• Récupérer en local la liste unique des IPs qui se sont connectées

• Appeler l’API FreegeoIP


• Exemple curl https://freegeoip.app/xml/90.26.16.226

• Objectif : Faire un tableau de synthèse et IPs par pays (Exemple :


France : 43
Canada : 4)
Remote commands
Commandes par ssh
SSH permet d’envoyer une commande unique via ssh. Cela signifie que
ssh va se connecter à la machine distante, exécuter la commande puis
se déconnecter.

Par exemple:
$ ssh toto@hetic_serveur ‘ls -l /home/toto’
Secure copy (1/2)
La commande scp permet une copie sécurisée entre deux machines, en
utilisant un tunnel ssh.
La syntaxe de la commande est la suivante:
$ scp (options) user@host:/original/file user@host:/copied/file

Par exemple:
$ scp toto@estiam_serveur:/home/toto/test ~/test
Secure copy (2/2)
scp permet de copier du host au remote, du remote au host et d’un remote à un
autre.

• Copier du remote au host:


$ scp toto@hetic_serveur:/path/to/file /where/to/save
• Copier du host au remote:
$ scp /path/to/file toto@hetic_serveur:/where/to/save
• Copier d’un remote à un autre remote:
$ scp toto@hetic_serveur:/path/to/file toto@bkp_serveur:/where/to/save
ssh file transfer protocol
Bien que proche du nom FTP, le SFTP est un protocole à part entière. Son
fonctionnement permet de remplacer celui de FTP et assure une sécurité
supplémentaire, grâce au ssh.
La commande est la suivante:
$ sftp toto@hetic_server

Une fois connecté, il est possible d’utiliser la commande ‘help’ pour obtenir la
liste des commandes disponible sur sftp.

Vous aimerez peut-être aussi