Hagamos algo similar a lo anterior para obtener un repositorio subversion compartido entre varios usuarios sin tener que pedir los favores del administrador.
-bash-3.2$ ssh-keygen -t dsa -P '' -C 'svnkey for pp2' -f 'svnkey_pp2'
authorized_keys
authorized_keys
la llamada al servidor
de subversion con la opción -t
:
command="/usr/bin/svnserve -t" ssh-dss AAA...== svnkey for pp2La opción
-t
hace que svnserve
se ejecute en modo tunel,
trabajando 'a la inetd' con la salvedad que la conexión
se considera pre-autenticada con el usuario actual.
.ssh
~/.ssh/config
:
lgforte@europa:~$ cat .ssh/config Host banot HostName banot.etsii.ull.es XXX.XXX.XXX.XXX user casiano IdentityFile /home/lgforte/.ssh/svnkey_pp2 ForwardX11 yes
En este ejemplo el compañero de equipo es lgforte
y se va a conectar al repositorio
que esta en la cuenta de casiano
lgforte@europa:~$ svn ls svn+ssh://banot/home/casiano/repository/acme-svn/trunk Build.PL Changes MANIFEST Makefile.PL README lib/ t/
Se puede añadir la opción -r repositorio
al comando forzado de
la clave:
command="/usr/bin/svnserve -t -r /home/casiano/repository" ssh-dss AAA...== svnkey for pp2
Esto facilita la conexión: no es necesario especificar el camino completo hasta el repositorio:
lgforte@europa:~$ svn ls svn+ssh://banot acme-svn/ lgforte@europa:~$ svn ls svn+ssh://banot acme-svn/ lgforte@europa:~$ svn ls svn+ssh://banot/acme-svn branches/ trunk/ lgforte@europa:~$ svn ls svn+ssh://banot/acme-svn/trunk Build.PL Changes MANIFEST Makefile.PL README lib/ t/
Usando la opción --tunnel-user=user
podemos hacer que subversion tome
nota del usuario asociado con la clave:
command="/usr/bin/svnserve -t -r /home/casiano/repository --tunnel-user=lgforte",no-port-forwarding ssh-dss ....
Ahora subversión tomará nota del usuario asociado con la clave y guardará la información en los logs:
lgforte@europa:/tmp$ svn checkout svn+ssh://banot/acme-svn/trunk/ acme-svn A acme-svn/t A acme-svn/t/00.load.t A acme-svn/t/perlcritic.t A acme-svn/t/pod.t A acme-svn/t/pod-coverage.t A acme-svn/MANIFEST A acme-svn/lib A acme-svn/lib/Acme A acme-svn/lib/Acme/SVN.pm A acme-svn/Makefile.PL A acme-svn/Changes A acme-svn/Build.PL A acme-svn/README Revisión obtenida: 5 lgforte@europa:/tmp$ cd acme-svn/ lgforte@europa:/tmp/acme-svn$ vi Makefile.PL lgforte@europa:/tmp/acme-svn$ svn commit -m 'lgforte modification' Enviando Makefile.PL Transmitiendo contenido de archivos . Commit de la revisión 6. lgforte@europa:/tmp/acme-svn$ svn log Makefile.PL ------------------------------------------------------------------------ r6 | lgforte | 2009-04-23 11:54:54 +0100 (jue, 23 abr 2009) | 1 line lgforte modification ------------------------------------------------------------------------ r4 | casiano | 2009-03-05 15:56:20 +0000 (jue, 05 mar 2009) | 1 line sally in trunk: list of final comments ------------------------------------------------------------------------ r3 | casiano | 2009-03-05 15:56:02 +0000 (jue, 05 mar 2009) | 1 line sally in trunk: list of comments ------------------------------------------------------------------------ r1 | casiano | 2009-03-05 15:53:05 +0000 (jue, 05 mar 2009) | 1 line branches ------------------------------------------------------------------------
'I want to allow access via svn+ssh://
, but am paranoid. I hate the idea
of giving each user a login; I would then have to worry about what they are,
and are not, allowed to access on my machine.'
en el enlace:
http://subversion.tigris.org/faq.html#ssh-authorized-keys-trick
'My svnserve binary is in a directory that isn't on my users' default PATHs, they use svn+ssh, and I can't figure out how to modify their PATH so that they can run svnserve.'
en el enlace:
http://subversion.tigris.org/faq.html#ssh-svnserve-location