Configurer ssh sur un serveur Linux

Plus besoin de le présenter, ssh un outil indispensable et sécurisé pour se connecter à distance sur un serveur Linux. Voici une vue globale sur son utilisation, sa configuration et quelques bonnes pratiques.

Génération des clés SSH

Cette commande va générer une nouvelle paire de clés ssh (publique et privée). La clé privée est à stocker soigneusement sur le serveur, la clé publique peut être partagée avec le serveur sur lequel on souhaite se connecter.

Les clés sont générés par défaut dans le répertoire ~/.ssh 

ssh-keygen -t ecdsa

Envoyer la clé publique sur le serveur distant :

ssh-copy-id -i ~/.ssh/id_ecdsa.pub user@server

Ou bien copier coller le contenu du fichier ~/.ssh/id_ecdsa.pub vers le fichier ~/.ssh/authorized_keys

Ce fichier doit généralement être créée sur le serveur distant et avoir les droits suivants :

sudo chmod 600 ~/.ssh/authorized_keys

Configuration du fichier ~/.ssh/config

Ce fichier va permettre de faire une configuration de base de ssh pour faciliter la prise en main à distance.

Ce fichier doit être créée :

vim ~/.ssh/config

Et peut contenir les infos de connexion

Host nomduserveur
    HostName ip_ou_domaine_serveur_distant
    User utilisateur
    IdentityFile ~/.ssh/id_edcsa
    Port 22

La commande de connexion complète : ssh user@server sera remplacée par ssh nomduserveur vu que l’utilisateur a déjà renseigné dans le fichier de config ainsi que la clé de connexion.

 

Configuration la connexion par clé uniquement

Sur le serveur il suffit de modifier le fichier de config ssh :

sudo vim/etc/ssh/sshd_config

Et modifier ou ajouter ces lignes :

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no

Puis de redémarrer le service ssh :

sudo systemctl restart sshd

Permission des fichiers SSH

Il est important de vérifier la configuration des droits des fichiers ssh pour dans un premier temps garantir la sécurité et dans un deuxième temps ssh refusera la connexion si la configuration est trop permissive.

chown -R $USER:$USER ~/.ssh

chmod 700 ~/.ssh

chmod 600 ~/.ssh/id_edcsa

chmod 644 ~/.ssh/id_edcsa.pub

chmod 600 ~/.ssh/authorized_keys

chmod 600 ~/.ssh/config