Se connecter à un VPS avec SSH

SSH : Secure Shell

Objectif

  • Se familiariser avec le protocole SSH (Secure SHell).

RappelTerminal et shell

Le terminal (aussi appelé invite de commande ou console) est le moyen le plus naturel pour interagir avec un ordinateur. Ce programme offre un shell (une interface système) donnant accès aux programmes de l'ordinateur. Il suffit d'un écran et d'un clavier pour utiliser ce shell.

DéfinitionLe programme SSH (Secure SHell)

Le programme SSH (Secure Shell) permet d'interagir de manière sécurisée avec un ordinateur distant via un shell. C'est le programme de référence pour effectuer des opérations à distance.

  • Toutes les commandes tapées depuis un clavier d'ordinateur à un emplacement A sont exécutées dans le shell d'un ordinateur à un emplacement B.

  • Les informations qui transitent sur Internet via SSH sont les chaînes de caractères représentant les commandes à exécuter et les chaînes de caractères représentant les résultats de ces exécutions.

DéfinitionLe protocole SSH

SSH est aussi le nom du protocole de communication utilisé par le programme SSH. Ce protocole fonctionne sur une architecture client-serveur ; l'ordinateur qui fournit les commandes est le client et l'ordinateur qui exécute les commandes sur son système est le serveur.

SSH repose généralement sur TCP pour le transport et est par défaut associé au port 22.

L'établissement d'une connexion SSH se fait en deux étapes :

  • l'établissement d'une communication sécurisée,

  • l'authentification du client.

MéthodeÉtablir une connexion SSH

On utilise la commande ssh depuis un terminal :

ssh alice@adresse.ip

La machine se trouvant à l'adresse serveur.exemple.com doit avoir un utilisateur alice.

Sur Windows, Putty est un client SSH qui permet d'ouvrir une console sous SSH. Il est téléchargeable sur le site dédié : https://www.putty.org/

Attention

Si ssh se connecte pour la première fois au serveur, l'utilisateur devra accepter d'utiliser la clé publique du serveur pour des raisons de sécurité.

Remarque

Si un serveur est associé à un nom de domaine, on peut utiliser ce domaine à la place de l'IP.

ssh alice@serveur.exemple.com

À retenir

  • Le protocole SSH permet à un client d'ouvrir un shell sur un serveur distant.

  • Ce protocole sécurise les communications en employant plusieurs méthodes de chiffrement, de l'authentification au transfert de données.

Appliquer la notion

Pré-requis

Disposer d'un VPS chez un hébergeur qui fournit un accès SSH à un serveur.

VPS : serveur dédié virtuel

Se connecter à ce serveur en utilisant une authentification par mot de passe.

Il faut utiliser la commande ssh depuis un shell local.

Une connexion ssh nécessite :

  • L'adresse IP du serveur,

  • Le nom d'un utilisateur,

  • Le mot de passe de l'utilisateur.

Exemple

L'hébergeur a fourni une adresse IPv6 et a créé un utilisateur exemple.

ssh exemple@2001:4b99:1:1:216:3eff:fe90:63f

Lors de la première connexion, pourquoi le terminal a-t-il demandé si vous faisiez confiance au serveur ?

La clé SSH d'un serveur est unique et sert à la fois à l'identifier et à chiffrer les communications.

Le client ssh stocke les clés publiques de tous les serveurs auxquels il s'est déjà connecté dans le fichier known_hosts.

  1. Lors la première connexion à un serveur qui n'est pas encore connu, ssh s'assure que vous savez qu'il s'agit d'un nouveau serveur.

  2. Si ce message apparaît et que ce n'est pas la première connexion, alors :

    • soit le serveur a changé de clé publique,

    • soit il s'est fait usurper son identité.

Vérifier que la clé SSH du serveur a bien été ajoutée aux hôtes connus (known_hosts).

La commande suivante permet de vérifier qu'un hôte est connu sur votre client SSH :

ssh-keygen -F ip_serveur

La commande renvoie des informations sur le serveur, la méthode de chiffrement utilisée ainsi que la clé publique.

Exemple

ssh-keygen -F 194.187.168.100

Agir sur un serveur comme à la maison

Pour réaliser cet exercice, connectez-vous à un VPS en SSH en tant que root.

Testez ensuite chacun des commande suivantes.

  • Regarder le nom de votre machine : hostname

  • Regarder qui vous êtes : whoami

  • Regarder où on est : pwd

  • Regarder quel est le système installé : lsb_release -a

  • Aller dans le dossier /tmp : cd /tmp

  • Créer un fichier avec votre lieu de naissance : nano doujeviens

  • Regarder ses processus : top

  • Regarder l'état de son disque : df -h

  • Regarder qui est connecté au serveur : who

  • Regarder l'état du service (daemon) SSH : systemctl status ssh

  • Regarder les logs du service SSH :

    journalctl -u ssh

    journalctl -n 20 -u ssh

  • Trouver votre IP : curl https://ifconfig.me && echo

Échanger des fichiers avec un serveur

Pour réaliser cet exercice vous devez être connecté à votre VPS.

On appellera sara le user connecté.

Créez un dossier shared dans le répertoire /home/sara.

sara doit être un user autorisé à se connecté en SSH au serveur.

Copiez un fichier contenant le nom de votre artiste préféré depuis votre PC vers votre VPS (dans le dossier shared) : rsync -v tmp.txt sara@51.15.235.148:/sara/shared

Créer un dossier partagé avec SFTP et l'explorateur de fichier : sftp://sara@51.15.235.148/home/sara/shared.

Ajoutez une liste d'œuvres de votre artiste préféré.

Créer un espace d'échange avec SFTP et Filezilla

  • installer Filezilla

  • configurer une connexion SFTP vers votre VPS

  • déposer une image de votre artiste préféré dans shared

Copiez le contenu de votre dossier shared dans un dossier accessible à un serveur web sur votre VPS.

[exercice optionnel] Se connecter à un serveur avec une clé

L'objectif est :

  1. de générer une paire de clé (publique et privée)

  2. puis de transférer la clé publique au serveur

  3. et de se connecter en utilisant l'authentification par clé

Questions préliminaires :

  • pourquoi transfère-t-on la clé publique ?

  • pourquoi ne transfère-t-on pas la clé privée ?

La clé publique sert à chiffrer les donner et la clé privée sert à déchiffrer les données.

Comprendre le chiffrement par clé : Gépégix

  • On communique notre clé publique au serveur afin que le serveur chiffre les données qu'il va nous envoyer avec notre clé publique. Les données seront déchiffrables uniquement grâce à la clé privée allant de paire avec la clé publique.

  • Si la clé privée est communiquée sur le réseau ou stockée sur le serveur elle risque d'être récupérée. Les données envoyées par le serveur pourront donc être déchiffrées par des tiers. Il est donc primordial de ne jamais communiquer sa clé privée. Elle ne sert qu'à déchiffrer les données que l'on vous envoie (chiffrées avec votre clé publique).

Pour générer une paire de clé il suffit de taper la commande suivante :

ssh-keygen

Il vous sera demandé une passphrase (mot de passe) qui chiffrera la clé sur votre machine. Ce n'est pas obligatoire mais il s'agit d'une sécurité supplémentaire au cas où quelqu'un d'autre que vous utiliserait votre machine.

Votre paire de clé sera enregistrée dans le dossier caché .ssh accessible depuis votre home.

Utilisez le terminal pour vous rendre dans le répertoire ssh de votre machine et affichez la paire de clés qui s'y trouve.

Il vous faut taper la commande suivante :

#commandes 
ls ~/.ssh
#résultat
id_rsa  id_rsa.pub  known_hosts

id_rsa est votre clé privée, id_rsa.pub votre clé publique et known_hosts contient la listes serveurs auquel vous vous êtes déjà connecté.

En utilisant la commande cat ~/.ssh/id_rsa.pubaffichez le contenu de votre clé publique.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU6aCD3LJM7KtMPT3xyn8vpuT3X8JrCWCnhD3jaTRRQmN4ZH8ofmqRh3/Czcp9ofhU50mIjmhmwx46bxr+sZI1TmY1EDsx0fClS7zUp1H1vE2zCKz4gRcKdbYFVtakj/3qQE4oKnnNeDTQm9wTlHuT3TE/SyvsI+0xA8VtgeX3lNeqODgyMhOTpoM5hnGlGF4CXIY9HvArl6wwMu/Ii4V5CgMSH/ldCDdRE8/SHOIHZ6IVpJeYjmsBaGYbrphNxNXVuaq9qEtV4o8YXHl8G701OCxIUi1QV0eEQCTCC2AA+Hf88mJCQh5zQ8tthbiO/cnbNrjvXyTZlQAIyvpyGaI/ stc@hal9017

L'objectif est à présent de transférez votre clé publique SSH sur votre serveur afin de s'y connecter sans mot de passe.

On suppose ici le user concerné est admin.

Configurer l'accès SSH :

  • se connecter en tant que admin : su admin

  • créer le dossier caché /home/admin/.ssh

  • créer le fichier .ssh/authorized_keys

  • copier la clé publique dans le fichier .ssh/authorized_keys

  • ajuster les droits :

    • 700 pour le dossier .ssh

    • 644 pour la clé publique et le fichier authorized_keys

Vous pouvez désormais vous connecter sans mot de passe. La passphrase de votre clé vous sera demandée à la place.

NB : le dossier .ssh et le fichier authorized_keys doivent appartenir à jack (si ce n'est pas le cas on utilise chown)

[exercice optionnel] Donner accès au serveur à des tiers

L'objectif est de donner accès à votre serveur à une autre personne en ajoutant sa clé sur votre serveur.

On appellera cet utilisateur jack dans le cadre de cet exercice.

Créer un nouvel utilisateur sur le serveur : adduser jack

Configurer l'accès SSH pour Jack

  • se connecter en tant que jack : su jack

  • créer le dossier /home/jack/.ssh

  • créer le fichier .ssh/authorized_keys

  • ajouter la clé à .ssh/authorized_keys

  • ajuster les droits :

    • 700 pour le dossier .ssh

    • 644 pour la clé publique et le fichier authorized_keys

NB : le dossier .ssh et le fichier authorized_keys doivent appartenir à jack (si ce n'est pas le cas on utilise chown)

VPS : serveur dédié virtuel

Objectifs
  • Savoir ce qu'est un VPS

  • Savoir créer un VPS chez un hébergeur

  • Savoir se connecter à distance sur un VPS avec SSH

RappelServeur

Un serveur est un ordinateur accessible depuis Internet, qui rend des services aux utilisateurs.

Il se distingue des ordinateurs personnels que l'on ne peut pas contacter directement aussi simplement depuis Internet.

ExempleUtilisation quotidienne des serveurs
  • Lorsque je me rends sur le site wikipedia.org, je demande en réalité aux serveurs de Wikipédia de m'envoyer le contenu de la page que je veux afficher.

  • Un ami ne peut pas accéder aux fichiers de mon ordinateur personnel : pour les partager, je dois les téléverser sur un serveur (envoyer un mail, utiliser un service partage de fichiers, etc.).

Remarque

Tout ordinateur personnel peut être transformé temporairement en serveur, mais on ne traite pas ce cas ici.

DéfinitionVPS

Un VPS (serveur dédié virtuel, ou Virtual Private Server) peut s'envisager comme un serveur réservé à son usage personnel. En réalité, il s'agit d'une partie d'un serveur physique isolée du reste du système : un serveur virtuel.

ExempleÀ quoi sert un VPS ?

Un VPS peut servir :

  • à mettre en ligne un site web : serveur Apache, Nginx.

  • à travailler à plusieurs sur une même machine : partage de fichier avec SFTP, serveur NextCloud, serveur GitLab.

  • à tester et installer d'autres applications web : Etherpad, Mattermost.

  • à tester et installer des applications d'Internet : mail.

MéthodeCréer un VPS chez un hébergeur

Il existe plusieurs hébergeurs professionnels qui proposent la location de VPS, on retrouvera en général les étapes suivantes :

  1. Se rendre sur le site de l'hébergeur (exemple : gandi.net)

  2. Choisir une offre (à noter que pour disposer d'un serveur réellement accessible sur Internet par tout le monde, il faut que le VPS soit doté d'une adresse IPv4)

  3. Choisir le système d'exploitation souhaité, sa version (par exemple : Debian 10)

  4. Choisir un nom pour identifier le VPS, créer un mot de passe robuste pour le compte administrateur et éventuellement associer une clé SSH

ExempleCréer un VPS chez Gandi
Remarque

Le VPS est contactable par son adresse IP, qui est unique sur Internet et est l'équivalent d'une adresse postale.

On peut utiliser la commande ping pour vérifier qu'un serveur répond bien.

ExemplePing
MéthodeAccéder à un VPS avec SSH

Pour travailler sur un VPS, il faut un moyen de s'y connecter et d'y ouvrir un shell. SSH (Secure SHell) est un outil standard qui remplit cette fonction : une fois la connexion établie, on travaille sur un VPS comme on travaille sur un shell local.

Dans un shell local, copier la commande reçue par mail pour ouvrir un shell distant sur le VPS.

ssh <super-utilisateur>@<adresse-IP>
ExempleAccéder à un VPS avec SSH

Cette image montre une session SSH classique :

  • La première commande s'exécute sur l'ordinateur local.

  • Après la connexion SSH, les commandes s'exécutent automatiquement sur le VPS distant.

  • La commande exit ferme la connexion SSH, les commandes s'exécutent de nouveau sur l'ordinateur local.

ComplémentAutres fournisseurs de VPS français

Il existe d'autres fournisseurs de VPS français, comme OVH et Scaleway.

ComplémentSSH et Windows 10

Windows n'intègre pas SSH par défaut. Il y plusieurs possibilités pour l'installer :

ComplémentPourquoi louer un VPS et pas un serveur physique ?

Les VPS répondent à un problème classique : louer un serveur physique impose de choisir des composants adaptés à la puissance voulue. Si les besoins augmentent, il faut changer de machine, ce qui peut être très coûteux.

Les fournisseurs de serveurs ont trouvé une astuce : séparer un serveur physique en plusieurs serveurs virtuels, dont la puissance peut être adaptée en fonction des besoins. Pour les utilisateurs, le coût est moindre, et pour les fournisseurs, l'utilisation d'un serveur physique est optimisée.

À retenir
  • Un VPS est l'équivalent d'un serveur que l'on peut louer pour son usage personnel. Il est accessible depuis Internet.

  • SSH permet de se connecter à distance sur son VPS, et d'y exécuter des commandes.

  • Il existe plusieurs fournisseurs de VPS français, comme Gandi, OVH ou Scaleway.

Fichier caché

Sous Linux les fichiers et dossiers cachés sont matérialisés par un point devant leur nom.

Exemple : .ssh

Les fichiers et dossiers cachés sont visibles via la commande ls -a (a pour all) et sont accessibles par leur chemins comme les dossiers normaux. Exemple de chemin : ~/.ssh

Liste des raccourcis clavier

Liste des fonctions de navigation et leurs raccourcis clavier correspondant :

  • Bloc Suivant : flèche droite, flèche bas, barre espace, page suivante, touche N
  • Bloc Précédent : flèche gauche, flèche haut, retour arrière, page précédente, touche P
  • Diapositive Suivante : touche T
  • Diapositive Précédente : touche S
  • Retour accueil : touche Début
  • Menu : touche M
  • Revenir à l'accueil : touche H
  • Fermer zoom : touche Échap.