====== 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