====== Utiliser des dépôts distants sur son serveur privé ====== Source : [[https://www.linux.com/training-tutorials/how-run-your-own-git-server/|How to Run Your Own Git Server]] ===== Sous Linux ===== Source : [[https://medium.com/@stadja/tout-sur-comment-se-connecter-%C3%A0-un-serveur-ssh-sans-mot-de-passe-b2cc5c0a86e1]] ==== Générer une clé SSH ==== Si on n'en a pas encore une, créer une paire de clés avec cette commande : ssh-keygen -t rsa -b 2048 -C "mon-adresse@email" * **Chemin de la sauvegarde** : accepter le chemin et le nom du fichier proposés. * **passphrase** : ne pas mettre de passphrase sinon il faudra l'entrer à chaque fois qu'on voudra utiliser cette paire de clés. Deux fichiers sont créés : /home/marc/.ssh/id_rsa # clé privée /home/marc/.ssh/id_rsa.pub # clé publique ==== Envoyer la clé publique sur le serveur ==== ssh-copy-id marc@SERVEUR Entrer le mot de passe de cet utilisateur sur le serveur. ==== Tester la connexion ==== ssh marc@SERVEUR Normalement l'accès est maintenant autorisé sans entrer de mot de passe. ===== Sous Windows ===== Source: [[https://support.atlassian.com/bitbucket-cloud/docs/set-up-an-ssh-key/]] Sous Windows je n'ai pas pris la peine de générer une clé SSH, je me contente de taper le mot de passe à chaque **push** ou **pull**. Dans **Git GUI** j'ajoute une remote que je nomme **cramnurbel** et dont l'emplacement est par exemple ''[[ssh://git@cramnurbel.net/home/git/projet1.git]]'' //...à suivre...// ===== Créer l'utilisateur GIT sur le serveur ===== __Sur le serveur__ : Créer un utilisateur **git** et lui attribuer un mot de passe : sudo adduser git __Sur la machine locale__ : Tester la connexion SSH de l'utilisateur **git** (le mot de passe sera demandé) : ssh git@SERVEUR Envoyer la clé RSA sur le serveur dans le compte de l'utilisateur **git** : cat ~/.ssh/id_rsa.pub | ssh git@SERVEUR "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" Se connecter à nouveau en SSH avec l'utilisateur **git** (le mot de passe ne sera plus demandé) : ssh git@SERVEUR ===== Créer un nouveau dépôt pour un projet ===== __Sur le serveur__ en tant qu'utilisateur **GIT** : Créer un dossier pour un projet : mkdir -p /home/git/test1.git cd /home/git/test1.git Initialiser un dépôt vide dans ce dossier : git init --bare __Sur la machine locale__ : Créer le dossier du projet s'il n'existe pas encore, et initialiser le dépôt : mkdir -p /home/marc/progs/test1 cd /home/marc/progs/test1 git init git add . git commit -m "Initial commit" Ajouter le dépôt distant : git remote add origin ssh://git@SERVEUR/home/git/test1.git Faire un **push** vers le dépôt distant : git push origin master Ensuite pour récupérer le projet sur une autre machine, utiliser **git clone** : git clone git@SERVEUR:/home/git/test1.git