Recherche de site Web

Comment configurer un serveur Git privé sur un VPS


Introduction

Ce tutoriel vous montrera comment configurer un serveur Git complet en utilisant des clés SSH pour l'authentification. Il n'aura pas d'interface web, cela couvrira simplement l'installation de Git et la configuration de votre accès. Nous utiliserons l'hôte "git.droplet.com" à la place du domaine que vous utiliserez pour votre VPS.

Cela peut être une excellente option si vous voulez garder votre code privé pendant que vous travaillez. Bien que l'open-source tende à être la norme, il y a des moments où vous ne voulez pas que votre code soit librement disponible. Un exemple serait si vous développez une application mobile, en particulier une application payante. Gardez à l'esprit que ce code peut être lu par n'importe qui s'ils connaissent l'adresse URL à utiliser pour le cloner, mais ce n'est que s'ils la connaissent.

Il y a une préoccupation majeure pour beaucoup, et c'est une interface web pour vos dépôts. GitHub le réalise de manière incroyable. Il existe des applications que vous pouvez installer telles que Gitosis, GitList et Goblet. Nous n'abordons pas celles-ci dans ce tutoriel, mais si vous dépendez beaucoup d'une interface graphique, alors vous voudrez peut-être les examiner et envisager d'en installer une dès que vous aurez terminé l'installation de votre serveur Git.

Créer la paire de clés SSH

Tout d'abord, nous devons générer une paire de clés SSH. Si vous utilisez Mac ou Linux, vous pouvez simplement exécuter la commande suivante dans un terminal, mais remplacez l'adresse e-mail par la vôtre :

ssh-keygen -C "youremail@mailprovider.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/flynn/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 
Your identification has been saved in foo_rsa.
Your public key has been saved in foo_rsa.pub.
The key fingerprint is:
ab:cd:ef:01:23:45:67:89:0a:bc:de:f0:12:34:56:78 flynn@en.com
The key's randomart image is:
+--[ RSA 2048]----+
|    o+-+  ..     |
|  E o            |
|   . ++.o..      |
|    o o H .      |
|   . .   =       |
|    . =o.o=      |
| o .             |
|  .              |
|     = o  .      |
+-----------------+

Je recommande vivement de mettre un mot de passe sur les fichiers de clés, c'est une couche de sécurité supplémentaire et cela a un impact très minimal. Si vous utilisez un système d'exploitation basé sur Windows, il existe des outils disponibles pour générer des paires de clés, comme PuTTY Gen, bien qu'il y ait un avertissement indiquant que vous devez vérifier avec les lois locales avant de l'utiliser, car certains pays ont interdit son utilisation. Si ce n'est pas le cas, vous pouvez vous connecter à votre VPS, créer la paire de clés et télécharger à la fois id_rsa et id_rsa.pub pour votre usage.

Ensuite, le VPS aura besoin d'un utilisateur spécifiquement pour Git. La plupart des gens créeront simplement un utilisateur appelé « Git », et c'est ce que nous allons faire pour ce tutoriel, mais n'hésitez pas à nommer cet utilisateur comme vous le souhaitez.

Configurer un utilisateur Git et installer Git sur votre VPS

Connectez-vous à votre VPS et obtenez les droits root* :

su -

*Certaines personnes se sentent mal à l'aise d'utiliser root de cette manière. Si votre VPS est configuré pour utiliser sudo, alors faites-le.

Ajoutez l'utilisateur Unix (pas nécessairement les noms d'utilisateur Git) pour gérer les dépôts :

useradd git

Puis donnez un mot de passe à votre utilisateur Git :

passwd git

Maintenant, c'est aussi simple que :

  • CentOS/Fedora : yum install git
  • Ubuntu/Debian : apt-get install git

Ajoutez votre clé SSH à la liste d'accès

À ce stade, vous voudrez être connecté en tant qu'utilisateur Git. Si vous ne vous êtes pas encore connecté à cet utilisateur, utilisez cette commande pour y passer :

su git

Vous devez maintenant télécharger votre fichier id_rsa.pub dans le répertoire personnel de votre utilisateur Git. Une fois cela fait, nous devons informer le démon SSH des clés SSH à accepter. Cela se fait à l'aide du fichier authorized_keys, qui se trouve dans le dossier pointé « ssh ». Pour le créer, saisissez :

mkdir ~/.ssh && touch ~/.ssh/authorized_keys

Remarque : Utiliser le double « & » dans vos commandes les enchaîne, donc cela indique au système d'exécuter la première commande puis la deuxième. Utiliser le « tilde » au début du chemin indiquera au système d'utiliser votre répertoire personnel, donc « ~ » devient /home/git/ sur votre VPS.

Nous allons utiliser la commande 'cat', qui prendra le contenu d'un fichier et le renverra à la ligne de commande. Nous utilisons ensuite le modificateur '>>' pour faire quelque chose avec cette sortie au lieu de simplement l'afficher dans votre console. Faites attention avec cela, car un seul '>' écrasera tout le contenu du deuxième fichier que vous spécifiez. Un double '>>' l'ajoutera, alors assurez-vous de savoir ce que vous voulez faire et dans la plupart des cas, il sera plus facile d'utiliser simplement '>>' afin que vous puissiez toujours supprimer ce que vous ajoutez plutôt que de devoir restaurer ce que vous avez écrasé.

Chaque ligne de ce fichier correspond à une entrée pour une clé que vous souhaitez avoir pour accéder à ce compte. Pour ajouter la clé que vous venez de télécharger, tapez ce qui suit, en remplaçant :

cat .ssh/id_rsa.pub | ssh user@123.45.56.78 "cat >> ~/.ssh/authorized_keys"

Maintenant, vous pouvez voir la clé là si vous utilisez cat sur le fichier de clés autorisées :

cat ~/.ssh/authorized_keys

Si vous voulez ajouter d'autres personnes à votre liste d'accès, elles doivent simplement vous donner leur clé id_rsa.pub et vous la joignez au fichier des clés autorisées.

Configurer un dépôt local

C'est un processus assez simple, il vous suffit d'appeler la commande Git et d'initialiser un dépôt nu dans le répertoire de votre choix. Disons que je veux utiliser « My Project » comme titre du projet. Lors de la création du dossier, j'utiliserais uniquement des lettres minuscules, remplacerais les espaces par des traits d'union, et ajouterais « .git » au nom. Ainsi, « My Project » devient « my-project.git ».

Pour créer ce dossier en tant que dépôt Git vide :

git init --bare my-project.git

Voilà ! Vous avez maintenant un dépôt Git configuré sur votre VPS. Passons à la façon de l'utiliser avec votre ordinateur local.

Utiliser votre serveur Git depuis votre ordinateur local

Sur Linux ou Mac OS, vous devez changer l'origine distante vers votre serveur nouvellement créé. Si vous avez déjà un dépôt local que vous souhaitez pousser vers le serveur, changez la distance en utilisant cette commande :

git remote set-url origin git@git.droplet.com:my-project.git

Si vous configurez un nouveau dépôt, utilisez ceci :

git init && git remote add origin git@git.droplet.com:my-project.git

Vous pouvez maintenant ajouter, pousser, tirer, et même cloner en sachant que votre code n'est accessible qu'à vous-même.

Mais que se passe-t-il si vous voulez que quelques personnes de confiance aient accès à ce serveur et que vous voulez garder les choses simples en les classant par les noms de vos utilisateurs ? Une manière simple et efficace de le faire est de créer un dossier portant le nom de chaque personne, donc dans le dossier personnel de votre liste d'utilisateurs Git, saisissez :

mkdir user1 user2

Maintenant, lorsque vous spécifiez le dépôt distant, cela ressemblerait à ceci :

git remote add origin git@git.droplet.com:user1/user-project.git