SSH (Secure Shell)

Parce que Telnet n'est pas ouf

SSH (Secure Shell)

Vous avez peut-être eu besoin ou aurez un jour besoin de vous connecter à un serveur ou une machine distante sans devoir vous y déplacer physiquement.
Vous ne savez peut-être pas comment vous y prendre, ne vous inquiétez pas il existe un outil fait pour vous y aider en toute sécurité( s'il est bien configuré évidemment xD).

SSH ou Secure Shell est le meilleur moyen de vous connecter et d'administrer vos systèmes. Il est utilisé pour récupérer un Shell distant ou pour tunneliser une application.
Il a existé de nombreuses distributions de SSH mais la plus utilisée de nos jours reste OPENSSH qui vient de OPENBSD, pour les systèmes windows nous retrouvons Putty et winsshd.

Nous allons principalement nous focaliser sur OPENSSH dans ce tutoriel

Serveur SSH

Pour installer le serveur ssh sur les systèmes Debian et compagnie.

sudo apt-get update
sudo apt install openssh-server

Une fois le serveur installé, vous pouvez vérifier s'il est lancé, le lancer ou l'arrêter et vous pouvez aussi l'ajouter aux tâches à lancer au démarrage de la machine.
Pour lancer le serveur

sudo systemctl start ssh
sudo systemctl start ssh

Pour vérifier le statut du serveur afin de vérifier qu'il est actif

sudo systemctl status ssh

Pour arrêter le serveur

sudo systemctl stop ssh

Configuration:

La configuration du serveur se trouve dans /etc/ssh/sshd_config.
Il y'a plusieurs paramètres dans ce fichier dont certains qui ne serviront pas. Nous allons survoler assez rapidement ceux qui vous serviront le plus.

Port 22

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
/etc/ssh/sshd_config

La première ligne permet de fixer le port d'écoute pour les connexions qui par défaut est le 22 pour ssh mais vous pouvez bien le mettre sur un port différent pour des raisons que j'ignore.

Les trois dernières lignes permettent de localiser les clés d'hôtes.

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
/etc/ssh/sshd_config
  • StrictModes permet de réfuser la connexion si les fichiers n'ont pas les bons droits
  • PermitRootLogin permet d'activer ou non la connexion au compte root via ssh. Cette option doit être mise à no car la plus part du temps on configure un compte qui a accès à sudo ou su et on n'autorise pas du tout l'accès par le compte root.
  • LogiGraceTime précise combien de secondes pour maintenir la connexion active sans se connecter avec succès.

Il y'a des options qui vous permette à partir du client ssh d'expprter une fenêtre graphique pour une application. Pour celà il faut activer le X11Forwarding

X11Forwarding yes
X11DisplayOffset 10
/etc/ssh/sshd_config

Une fois vos modifications enregistrées il faut recharger le serveur

sudo systemctl reload ssh
sudo systemctl reload ssh

Maintenant que nous savons faire des configurations basiques du serveur, nous allons apprendre à configurer et se connecter au serveur dans la partie suivante

Client SSH