net:git

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
net:git [2020/05/24 14:34] – [Mise en place] davidnet:git [2023/05/22 10:25] (Version actuelle) – [Utilisateur à distance] david
Ligne 1: Ligne 1:
-<note important> 
-en cours d'écriture 
-</note> 
- 
- 
 <jumbotron> <jumbotron>
 ====== Donner accès à vos dépôt git ====== ====== Donner accès à vos dépôt git ======
  
-C'est la norme aujourd'hui, les projets, les utilisateurs donnent accès à un dépôt *gitpour permettre à d'autres de télécharger leur travail. +C'est devenu la norme aujourd'hui, pour leurs projets, les développeurs donnent accès à un dépôt git pour permettre à d'autres de télécharger leur travail. 
-De base, git s'installe avec un démon et un serveur web pour faciliter cette approche.+De base, [[https://git-scm.com/|git]] s'installe avec un démon et un serveur web pour faciliter cette approche. 
 </jumbotron> </jumbotron>
  
 Vous devez vous préparer à fournir les [[https://www.freebsd.org/doc/handbook/ports.html|ports]] suivants: Vous devez vous préparer à fournir les [[https://www.freebsd.org/doc/handbook/ports.html|ports]] suivants:
  
-  - ''devel/git'' +  - [[https://www.freshports.org/devel/git|devel/git]] 
-  - ''www/fcgiwrap'' si vous utilisez [[ports:nginx]];+  - [[https://www.freshports.org/devel/git|www/fcgiwrap]] si vous utilisez [[ports:nginx]];
  
 ===== Mise en place ===== ===== Mise en place =====
Ligne 20: Ligne 16:
 Préparez une [[jails:zfs|jail]] nommée ''git'', dans le répertoire ''/jails/git'' avec les paramètres standards. Préparez une [[jails:zfs|jail]] nommée ''git'', dans le répertoire ''/jails/git'' avec les paramètres standards.
  
-Installez [[https://www.freshports.org/devel/git|/devel/git]] ce qui amène le démon ''git_daemon''.+Installez [[https://www.freshports.org/devel/git|devel/git]] qui amène le démon ''git_daemon''.
  
 Cnfigurez le tout pour recevoir vos dépôts dans ''/usr/local/git'': Cnfigurez le tout pour recevoir vos dépôts dans ''/usr/local/git'':
Ligne 39: Ligne 35:
 </code> </code>
  
-La dernière ligne, qui donne des droits d'écriture  à 'git_daemon' ne sera utile qui si vous voulez permettre via un ou plusieurs utilisateurs un accès //git// distant.+La dernière ligne, qui donne des droits d'écriture  à ''git_daemon'' ne sera utile qui si vous voulez permettre via un ou plusieurs utilisateurs un accès //git// distant.
  
 === Accéder aux dépôts === === Accéder aux dépôts ===
Ligne 49: Ligne 45:
 </code> </code>
  
-Redirigez le port ''git'',''9418'', vers votre jail:+Redirigez le port ''git'',''9418'', vers votre //jail//.Ici, avec pf(4):
  
-<file /etc/pf.conf>+<file bash /etc/pf.conf>
 rdr pass on $ext_if proto tcp from any to ($ext_if) port 9418 -> $jail_git port 9418 rdr pass on $ext_if proto tcp from any to ($ext_if) port 9418 -> $jail_git port 9418
 rdr pass on $ext_if inet6 proto tcp from any to ($ext_if) port 9418 -> $jail_git port 9418 rdr pass on $ext_if inet6 proto tcp from any to ($ext_if) port 9418 -> $jail_git port 9418
Ligne 57: Ligne 53:
 ====== Serveur web  ====== ====== Serveur web  ======
  
-''git-web'' est une interface *gciqui va offrir un accès web vers vos dépôts.+''git-web'' est une interface //gci// qui va offrir un accès web vers vos dépôts.
  
 Il peut être utilisé directement sous Apache, mais nécessite le port [[https://www.freshports.org/www/fcgiwrap|www/fcgiwrap]] Il peut être utilisé directement sous Apache, mais nécessite le port [[https://www.freshports.org/www/fcgiwrap|www/fcgiwrap]]
Ligne 135: Ligne 131:
  
 ===== Utilisateur à distance ===== ===== Utilisateur à distance =====
 +
 +Jusqu'ici, vous utilisateurs peuvent //cloner// les dépôts via le protocole //git//:
 +
 +<code bash>
 +david@loin:~>git clone git://popeye.lapinbilly.eu/inkscape-1.0-freebsd
 +Clonage dans 'inkscape-1.0-freebsd'...
 +remote: Enumerating objects: 68, done.
 +remote: Counting objects: 100% (68/68), done.
 +remote: Compressing objects: 100% (29/29), done.
 +remote: Total 68 (delta 37), reused 68 (delta 37), pack-reused 0
 +Réception d'objets: 100% (68/68), 27.65 Kio | 272.00 Kio/s, fait.
 +Résolution des deltas: 100% (37/37), fait.
 +</code>
 +
 +Vous pouvez bien sûr autoriser n'importe qui à faire n'importe quoi^W^W^W^W pousser ses propres modifications, en ajoutant les autorisations idoines à ''git_daemon''.
 +\\ Mais la plupart du temps, vous voudrez restreindre les modifications sur vos dépôts à quelques personnes triées sur le volet.
 +Le seul protocole pris en charge par **git**, qui vous permette de faire cela simplement est ssh(1).
  
 La première difficulté est la question des droits d'accès et l'emplacement des dépôts. La première difficulté est la question des droits d'accès et l'emplacement des dépôts.
Ligne 144: Ligne 157:
 root@git:/usr/local/git # su - david root@git:/usr/local/git # su - david
 $ ln -s /usr/local/git git $ ln -s /usr/local/git git
 +$ exit
 +root@git:/usr/local/git # chown -R david:git_daemon /usr/local/git/le_depot_a_david
 </code> </code>
  
-Et d'affecter à votre utilisateur comme groupe principal ''git_daemon'':+Ou, faites en sorte que ce soit l'utilisateur qui créé le dépôt. 
 +Aussi, affecter à ce dernier le groupe principal ''git_daemon'': 
 <code bash> <code bash>
 root@git:/usr/local/git # pw usermod david -g git_daemon root@git:/usr/local/git # pw usermod david -g git_daemon
 </code> </code>
  
-Le seul protocole qui permettent un accès sécurisé aux utilisateurs est ssh(1).Attribuez les [[:net:ssh|clefs ssh]] de votre utilisateur distant.+Attribuez les [[:net:ssh|clefs ssh]] de votre utilisateur distant à l'utilisateur local à la //jail//. 
 +N'autorisez que cet utilisateur à ce connecter via ssh: 
 +<file sshconfig /etc/ssh/sshd_config> 
 +AllowUsers david 
 +</file>
  
  
Ligne 162: Ligne 183:
 root@popeye:/ # sysrc -j git sshd_enable='YES' root@popeye:/ # sysrc -j git sshd_enable='YES'
 sshd_enable: no -> YES sshd_enable: no -> YES
 +root@popeye:/ # sysrc -j git sshd_flags="-o ListenAddress=192.168.0.13 -o ListenAddress=fc00::168:13"
 +sshd_flags:  -> -o ListenAddress=192.168.0.13 -o ListenAddress=fc00::168:13
 root@popeye:/ # service -j git sshd start root@popeye:/ # service -j git sshd start
 </code> </code>
 +
 +<callout type="primary" icon="true">Par défaut //sshd// écoute sur toutes les interfaces, les options sont là pour le restreindre aux adresses de la //jail//.</callout>
  
 Maintenant, il faut connecter l'hôte à la jail. A moins d'interdire totalement l'accès ssh(1) sur l'hôte, il est peu probable que cela vous convienne, il faudra utiliser un autre port que le classique ''22'' pour se connecter à la jail. Maintenant, il faut connecter l'hôte à la jail. A moins d'interdire totalement l'accès ssh(1) sur l'hôte, il est peu probable que cela vous convienne, il faudra utiliser un autre port que le classique ''22'' pour se connecter à la jail.
Ligne 169: Ligne 194:
 Ici, le port 9022 est attribué par pf(4) pour cela: Ici, le port 9022 est attribué par pf(4) pour cela:
  
-<file /etc/pf.conf>+<file bash /etc/pf.conf>
 # allow jail_git to connect to internet # allow jail_git to connect to internet
-nat on $ext_if inet6 from $jail_git to any -> ($ext_if)+nat on $ext_if inet6 from $jail_git to any -> ($ext_if):0
  
 rdr pass on $ext_if proto tcp from any to ($ext_if) port 9022 -> jail_git port 22 rdr pass on $ext_if proto tcp from any to ($ext_if) port 9022 -> jail_git port 22
Ligne 181: Ligne 206:
 Du coté du client, adaptez votre configuration ssh à la connexion git: Du coté du client, adaptez votre configuration ssh à la connexion git:
  
-<file .ssh/config>+<file javascript .ssh/config>
 Host git.popeye.lapinbilly.eu Host git.popeye.lapinbilly.eu
     HostName popeye.lapinbilly.eu     HostName popeye.lapinbilly.eu
Ligne 192: Ligne 217:
  
 <code bash> <code bash>
-david]loin:~>git clone david@git.popeye.lapinbilly.eu:git/inkscape-1.0-freebsd+david@loin:~>git clone david@git.popeye.lapinbilly.eu:git/inkscape-1.0-freebsd
 Clonage dans 'inkscape-1.0-freebsd'... Clonage dans 'inkscape-1.0-freebsd'...
 Enter passphrase for key '/home/david/.ssh/llanura':  Enter passphrase for key '/home/david/.ssh/llanura': 
  • net/git.1590330886.txt.gz
  • Dernière modification : 2020/05/24 14:34
  • de david