mitago.net

Página web de Celso González

Subversion con claves ssh

El otro día estuve instalando un repositorio de subversion que seguramente empleen como mucho dos personas, que además tienen cuenta en la máquina que aloj a el repositorio, así que pense que podría utilizar el mismo ssh para conectar al repositorio y de esta forma además de incrementar la seguridad en la com unicación me evitaba tener que abrir un puerto y tener un demonio ejecutandose, ssh+svn sólo ejecuta subversion bajo demanda, no está ejecutandose de form a continua.

La instalación en el servidor no requiere nada. Sencillamente creamos el repositorio, en /var/foo/bar por ejemplo, y listo. Con el cliente lo único que ten emos que hacer es indicar que usamos svn con ssh, el nombre de usuario, el host y la ruta al repositorio

svn checkout svn+ssh://usuario@host/var/foo/bar

Después de esto no pide la contraseña y bajamos el código, cada vez que hagamos una operación que requiera algo de conexión tendremos que volver a escribir la contraseña o utilizar algún programa tipo ssh-askpass. La otra opción es utilizar claves ssh pero aquí aparece el siguiente problema

En mi caso, siempre empleo una clave diferente para cada host (ssh-keygen -f nombre_de_clave) al que me conecto y desde cada cliente que me conecto. Esto no es bueno ni malo, realmente con el debacle de openssl ha sido más trabajo el cambiar todas las claves, pero creo que aporta un mayor nivel de seguridad ya que una clave comprometida solo afectaría a una máquina. Es mi forma de trabajo y para conectarme utilizo la opción -i nombre_de_clave en vez de dejar que utilize la id_rsa habitual.

Pues bien, no hay forma de indicarle a svn que utilice unos parámetros especiales para la conexión ssh y así es como llegue al fichero .ssh/config. Este fi chero permite definir una serie de Hosts para los que definimos una serie de parámetros de conexión, siendo en este caso los que necesito los siguientes:

Host doidoi
  Hostname fqdn_de_host
  User usuario
  IdentityFile ~/.ssh/doidoi

Con esta sencilla configuración, se puede complicar mucho más (man ssh_config), puedo ejecutar ssh doidoi y directamente me resolverá el nombre del servido r, el usuario con el que tiene que hacer login, la clave que tiene que emplear, los puertos que tiene que redirigir, etc...

Lo bueno es que esta configuración también vale para todas las utilidades ssh related, como scp, rsync y por supuesto subversion, de forma que la forma de hacer el checkout de fqdn_de_host con el usuario y la clave generada quedaría de esta forma

svn checkout svn+ssh://doidoi/var/foo/bar

Y yo me preguntaba como podía haber vivido hasta ahora.

mié 21 mayo 2008 01:411 comentarios