Pour le projet d’un client, j’ai besoin de déployer du code sur un serveur à partir d’un dépôt git. N’étant pas l’administrateur du serveur, je ne souhaite pas y laisser trainer une de mes clefs privées.

J’utilise Gitlab — qui est une très bonne altérnatives aux bitbucket et github. Malheureusement, on ne peut pas sur gitlab avoir plusieurs clefs privées avec des permissions distinctes.

Car face à un admin peut scrupuleux ou simplement à une compromission du serveur, l’usurpateur aurait alors accès à tous mes projets.

C’est également l’application d’un bonne pratique en sécurité : réduire les privilèges au maxium.

Il existe plusieurs techniques pour palier ce problème, en voici deux :

  • créer un utilisateur chez gitlab.com (juste pour le serveur) et lui donner uniquement les droits en lecture
  • utiliser une clef de déploiement (deploy key) qui est en lecture seule

La deuxième, utiliser une clef de déploiement à l’avantage d’être fait pour ça et sera probablement plus facile à gérer dans le temps.

Pour la mettre en œuvre, rien de bien particulier : un ssh-keygen pour générer un .ssh/id_rsa.pub et .ssh/id_rsa dans la session de l’utilisateur sur le serveur qui va faire le git pull. Il ne reste plus qu’à confier la clef publique (id_rsa.pub) à l’hebergeur du dépot (via l’interface web généralement).

Un peu plus sur le sujet :

Et voilà !