Mémo de configuration de SSH

Mémo de configuration de SSH
Crédit photo : My Foto Canva on Unsplash

J’ai écrit cet article pour noter les “astuces” d’utilisation de SSH.

Le répertoire .ssh

Ce répertoire est situé dans le home directory de l’utilisateur. Il contient ses clés privées (entre autres) et les fichiers de personnalisation des connexions. C’est un répertoire critique, strictement personnel qui ne doit être accédé par personne d’autre donc chmod 700 ! (Ou même 500 si vous ne comptez pas modifier les fichiers de config qu’il contient).

Le fichier de configuration ~/.ssh/config

Ce fichier contient des directives spécifiques pour certains serveurs. Il évite de devoir les saisir à chaque fois sur la ligne de commande.

Sa syntaxe est la suivante :

Directives générales

Host nom_d_hote
  Directives spécifiques de l'hôte

Par exemple :

monserveur.chezmoi.fr
  Port 121
  User userspecifique
  IdentityFile /home/user/.ssh/cle_prive.key

Utiliser une session SSH restreinte

Pour lancer une commande depuis un serveur A sur un serveur B, on peut utiliser SSH.
Le principe est simple : sur le serveur cible, on crée un utilisateur cmdauto.
Pour cet utilisateur, on génère un couple certificat/clé privé avec openssl :

ssh-keygen -f cle_auto.key -b 2048

On se retrouve avec deux fichiers :

  • cle_auto.key : la clé privée
  • cle_auto.key.pub : la clé publique

Il faut maintenant copier la ligne contenue dans cle_auto.key.pub sur le serveur B dans le fichier /home/cmdauto/.ssh/authorized_keys2.

Il est à présent possible depuis le serveur A de lancer des commandes (’‘ls’’ par exemple) sur le serveur B en exécutant :

ssh -i cle_auto.key cmdauto@serveurB ls -la

Il peut être très utile de restreindre les possibilités d’exécution à distance, par exemple si l’utilisateur cmdauto fait partie des sudoers.
Pour cela, il suffit d’ajouter les paramètres suivants au début de la ligne contenant la clé publique dans le fichier /home/cmdauto/.ssh/authorized_keys :

command="/home/cmdauto/ma_commande.sh",from="IP_serveurA",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3N...

De cette façon, toute connexion réalisée avec cette clé SSH ne provoquera que le lancement du script ma_commande.sh.