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

Mais si l'utilisateur cmdauto fait partie des sudoers, il peut être très utile de restreindre les possibilités d'exécution à distance. Pour cela, il suffit d'ajouter les paramètres suivants au début de la ligne contenant la clé publique dans le fichier 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.