Tout le monde connait le fabuleux gestionnaire de version subversion non ? svn.
> L’idée est d’utiliser le transfert de fichiers dans la repository via ssh cryptée.
> L’autre contrainte est de ne pas donner un shell aux utilisateurs de svn.
Ssh permet cela facilement: Go pour un Setup en 5min avec un serveur linux ?
SVN
Wikipedia> svn : Un logiciel de gestion de versions (ou VCS en anglais, pour Version Control System) est un logiciel qui permet de stocker un ensemble de fichiers en conservant la chronologie de toutes les modifications qui ont été effectuées dessus.
Bref, l’outil indispensable pour pouvoir développer seul ou à plusieurs, et d’avoir un stockage pour toutes les versions et bien plus encore. (note: il y a d’autres logiciels de versionning.)
Transfert
Svn supporte pas mal de protocoles pour l’échange de fichiers avec la repository:
file:/// | Accès direct au dépôt (sur un disque local). |
http:// | Accès via le protocole WebDAV à un serveur Apache configuré pour Subversion. |
https:// | Identique à http:// , mais avec chiffrement SSL. |
svn:// | Accès via un protocole personnalisé à un serveur svnserve. |
svn+ssh:// | Identique à svn://, mais à travers un tunnel SSH. |
L’idée est d’utiliser le transfert de fichier via ssh.
Go pour Svn+ssh
- Sur le client:
- Générer vos clefs privée/publique … si ce n’est pas déjà fait: ssh-keygen -b 4096 cela génère une clef privée id_rsa et une clef publique id_rsa.pub qui sera à transférer sur le serveur.
- Sur le serveur:
- Créer un user svn sur votre serveur: useradd svn -d /home/svn
- Ajouter l’autorisation par clef dans le fichier.
~svn/.ssh/authorized_keys2 de l’utilisateur svn fraîchement créé.
C’est là que réside l’astuce: Il faut ajouter la commande qui sera lancée à l’invocation de ssh juste avant la clef publique de l’utilisateur.- Les options empêchent d’ouvrir une session sur le serveur (ou autre tunnel)
- tunnel-user: permet d’identifier les utilisateurs dans la repository svn avec les droits.
command=”svnserve -t -r /home/svn –tunnel-user=testsvn”,no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACA……== user@host
- Créer votre premiere repository: su – svn
svnadmin create MyFirst
- Sur le client:
- Test: svn co svn+ssh://svn@serveur/MyFirst MyFirst
cd MyFirst
svn mkdir test
svn touch fichier
svn add fichier
svn commit -m “GoGo”
- Test: svn co svn+ssh://svn@serveur/MyFirst MyFirst
- Pour finir:
- Créer autant de clefs que d’utilisateurs, en prenant soin de modifier le paramètre tunnel-user dans le fichier authorized_keys2.
- Développer vos projets
…
Je ne connaissais, alors là, pas du tout cette astuce! Merci Dominique!
En passant, que penses-tu de Git? J’utilise les deux mais, pour être franc, il y a des aspects de Git que j’ai beaucoup de mal à comprendre!