Protocole SSH en détails

https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server-fr

Introduction

SSH, ou Secure Shell, est un protocole utilisé pour se connecter en toute sécurité à des systèmes distants. C’est le moyen le plus courant d’accéder à des serveurs Linux distants.

Installation

On installe ‘openssh-server’ sur la machine à laquelle on veut avoir accès (machine serveur) depuis le PC local (machine cliente) ; le programme client ‘openssh-client est normalement préinstallé
apt install openssh-server
Lors de l’installation, un couple de clefs RSA est généré et stocké dans le répertoire /etc/ssh :
– Le fichier ssh_host_rsa_key contient la clef privée et a les permissions 600
– Le fichier ssh_host_rsa_key.pub contient la clé publique et a les permissions 644

Authentification

Par mot de passe

Par clefs

C’est la méthode la plus sure
Au lieu de s’authentifier par mot de passe, les utilisateurs peuvent s’identifier grâce à la cryptographie asymétrique et son couple de clefs privée/publique (comme le fait le serveur SSH auprès du client SSH)

Générer ses clefs

Note : pour repartir d’une configuration propre concernant les paramètres SSH : sur le serveur, effacer ce qui se trouve dans le fichier ~/.shh/authorized_keys et sur la machine cliente, supprimer les fichiers (s’ils existent) du dossier ~/.ssh : known_hosts, id_rsa et id_rsa.pub; (et le faire dans cet ordre : serveur, puis seulement après client !)

Pour générer un couple de clefs RSA, taper sur la machine cliente : ssh-keygen -t rsa

La clef privée est stockée dans le fichier ~/.ssh/id_rsa avec les permissions 600
La clef publique est stockée dans le fichier ~/.ssh/id_rsa.pub avec les permissions 644
Lors de la création, openssh demande une pass phrase qui est un mot de passe pour protéger la clef privée; cette pass phrase sert à chiffrer la clef privée, elle sera demandée à chaque utilisation de la clé privée, c’est à dire à chaque fois qu’on se connecte en utilisant cette méthode d’authentification
(Pour modifier la pass phrase, il suffit de taper ssh-keygen -p)

Autoriser la clef publique

Pour cela, il faut copier la clef publique dans le fichier ~/.shh/authorized_keys de la machine sur laquelle on veut se connecter:
ssh-copy-id -i ~/.ssh/id_rsa.pub -p PortSSH login@IP_serveurSSH

Se connecter

C’est la meme commande que pour une authorisation par mot de passe :
ssh login@IP_serveurSSH -p portSSH
La pass phrase pour décoder la clef privée est alors demandée

Se connecter sans avoir à entrer la pass phrase

La machine cliente demande la pass phrase à chaque utilisation des clefs pour s’authentifier;
Pour éviter d’avoir à taper systématiquement sa pass phrase, on peut utiliser un petit programme : ssh-agent ; ce programme tourne en tache de fond et garde la clef en mémoire
La commande ssh-add permet de donner sa clef à ssh-agent; quand une connexion ssh est demandée depuis la machine cliente, il contacte ssh-agent pour qu’il lui donne la clef
(Sur la plupart des systèmes linux, ssh-agent est automatiquement lancé au démarrage (sinon, on peut le lancer manuellement avec la commande eval 'ssh-agent')
On tape donc sur la machine cliente ssh-add, la pass phrase est demandée
Maintenant que la clef a été transmise à l’agent, on peut se connecter sans mot de passe à toutes les machines sur lesquelles la clef publique a été copiée dans le fichier ~/.ssh/authorized_keys

Note : parfois, ssh-agent ne se lance pas automatiquement à chaque boot
Pour vérifier si il est actif : taper echo $SSH_AGENT_SOCK : si une chaine vide est renvoyée, c’est qu’il n’est pas actif
Pour le lancer :
eval 'ssh-agent'
ssh-add
# ici entrer la pass phrase
On peut alors se connecter en ssh sans entrer de mot de passe sur toutes les machines ou la clé publique à été copiée dans le fichier ~/.shh/authorized_keys (jusqu’au prochain reboot…donc les 2 commandes ci-dessus à effectuer à chaque boot)

Conclusion

Si le serveur SSH est connecté à internet, il est préférable d’utiliser l’authentification par clefs et de désactiver l’authentification par mot de passe car des scanners balayent sans cesse la toile