Instalación de SVN en Windows con ISA Server 2006
Recientemente mis necesidades de desarrollo fuera del trabajo han crecido, e iba por la vida con el pen-drive, la copia versionando… un lío.
Por otra parte estaba un poco cansado de Source Safe con todos los riesgos conocidos…
Descubrí Subversion, con tortoise como cliente, así que he decidido utilizarlo como el repositorio central que gestione todo mi código, además del resto de documentos, al ser un repositorio basado en ficheros.
Uno de los problemas que me encuentro es que mis comunicaciones las gestiona un ISA Server 2006 como proxy, y que no quiero tocar los Apaches que tengo en explotación. Por otra parte, tengo mucho espacio en el disco del ISA Server, así que quiero que sea el propio ISA Server el contenedor de los repositorios.
También, quiero que las comunicaciones estén seguras, así que he decidido hacerlo con túneles SSH.
Con este escenario y la intención de instalar únicamente lo estrictamente necesario, vamos manos a la obra.
Ingredientes
• Subversion SVN Server, descargando la última versión en la web de tigris (Yo me he bajado la versión de CollabNet)
• TortoiseSVN, para mi flamante Windows 7
• OpenSSH for Windows, que tengo que decir que de todos los que he probado es el más claro y el que menos guerra me ha dado por la facilidad de uso, descargado de sshwindows.sourceforge.net
Receta:
• Con un usuario administrador en ISA Server, vamos a instalar OpenSSH for Windows (http://sshwindows.sourceforge.net/download/)
• Todo por defecto
• Cuando terminamos de instalar, nos recuerda que hay que editar el fichero passwd. Afortunadamente, este es de los programas que el readme es clarito clarito. En cualquier caso aquí van mis pasos.
• Creo un usuario para acceder al subversión, que no será administrador del ISA Server, y que voy a llamar “svnUser”. Claro, una cosa que voy a necesitar es que esté su perfil creado en la máquina con ISA Server, así que le hago administrador local y lo pongo en el grupo Remote Desktop Users, y accedo con el usuario para crearle el perfil
• Ahora avanzo con el usuario SVN, ya que estamos dentro con el.
• Voy al directorio de instalación de SSH, (c:\program files\OpenSSH\bin) en modo consola.
• Comandos, (explicados muy bien en el quick start guide
mkgroup –l >> ..\etc\group
mkpasswd –l –u svn >> ..\etc\passwd
net start OpenSSHd
• Verificamos que podemos conectar con el servidor SSH con “ssh localhost”
En este momento dirá que el fingerprint no es válido y preguntará si deseamos continuar a lo que contestaremos “yes”. Una vez pasado, aparecerá un disclaimer, y pedirá un password, que le pondremos el del usuario que acabamos de crear. Si todo esto ha ocurrido, todo va bien.
• Ahora vamos al directorio del OpenSSH\etc y buscamos el fichero banner.txt. Lo abrimos con el bloc de notas, lo borramos todo y salimos guardando, dejando el fichero completamente vacío
• Instalamos Subversion Server.
(http://www.collab.net/servlets/OCNDirector?id=CSVN1.6.5WINS)
• Cuando pregunta los componentes, quitamos el APACHE MOD, y lo demás que venga (a la fecha de este documento, nada más), dejando solamente SVNSERVE
• Puerto por defecto y la ruta que queramos para el repositorio. Es importante saber que esta ruta nos hará falta luego para conectar con Tortoise. Yo la he acortado por comodidad al escribir y he puesto “c:\svnFolder”
• Marcar Install svnserve to run as Windows Service
• El resto por defecto, e instalar.
• Automatic updates, lo he desmarcado (cosa que hago en todos los servicios pues prefiero actualizar cuando yo quiero)
• Una vez terminado de instalar, cerramos si tenemos abierta una consola DOS, y abrimos una nueva (para coger las nuevas variables de entorno).
• Paramos y reiniciamos el servicio OpenSSHd con
Net stop opensshd
Net start opensshd
• Probamos que funciona Subversion, con
ssh localhost svnserve –t
• La línea anterior devolverá algo parecido a
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops
• Si tenemos eso, todo va bien. Pulsamos un par de intros o control +c para salir.
• Lo que hemos conseguido es conectar al repositorio sobre ssh. Ahora lo que queda es la publicación.
• Terminando con el usuario. Hasta este momento, el usuario SVN que hemos creado, es administrador, por lo que vamos a quitarlo de los grupos “Remote Desktop Users” y “Administrators”, dejándolo solamente en el grupo Users, por seguirdad.
• Terminando con OpenSSHD: El servicio, por omisión, está en manual, así que vamos a Servicios y lo ponemos en automático.
• Terminando con Windows: Será muy importante ir a la carpeta c:\svn_folder que hemos creado y dar permisos de control total al usuario para esa y todas las que se creen.
• ISA SERVER. Configurando.
• La configuración del ISA Server es realmente sencilla, pues vamos a crear una regla para poder acceder desde fuera al SSH, que está en el puerto TCP/22 incoming.
• Nueva regla de publicación de protocolo de servidor no web
• Nombre “SSH – Server”
• Dirección IP del servidor. La dirección LAN (interna) del ISA Server
• Protocolo: Nuevo
• Nombre del protocolo – SSH Server.
Nota del autor (no estamos dando una clase magistral de ISA Server, sino unos pasos para llegar al objetivo del documento, dado que el protocolo SSH ya está definido en ISA Server)
• Información sobre la conexión principal. Nueva
Tipo de protocolo TCP
Dirección Entrada
Intervalo de puertos 22 a 22
Conexiones secundarias NO
• Direcciones de escucha:
Aquí pondremos las redes a las que atender: Para escuchar a Internet, en mi caso, solamente Externa.
• Terminamos y Aplicamos.
• Instalamos Tortoise SVN en el cliente que va a acceder al repositorio (http://tortoisesvn.net/downloads)
• Descargamos puTTY,
(http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe)
que es el cliente ssh, y lo ponemos en el directorio bin de la instalación de tortoise
(c:\archivos de programa\TortoiseSVN\bin)
• Ejecutamos putty.exe y creamos un destino:
hostname: el nombre o la dirección de nuestro servidor en Internet
port 22
Saved Sessions, escribimos un nombre descriptivo, que será el que utilizaremos con tortoise: ejemplo svn.tecnoprevisa.com
Finalmente le damos a Save, y volvemos a probar dando a Open.
• Al igual que antes, ahora nos vuelve a decir que no coincide el fingerprint, y pulsamos SI
Degustación.
Creamos un repositorio nuevo, en el directorio SVN que habíamos creado en C:\svnFolder.
Nos posicionamos ahí, en el servidor ISA, con una consola dos, y escribimos
Svnadmin create mi_repositorio
Hacer un CheckOut
En nuestro cliente vamos a la carpeta donde queramos el checkout, botón derecho, en el menú de Tortoise, elegimos “SVN checkout”
En “URL of repository” escribimos:
svn+ssh://@//
Queda escrito según el ejemplo que traemos…
svn+ssh://svnUser@svn.tecnoprevisa.com/svnFolder/mi_repositorio
siendo:
svn+ssh:// el protocolo
svnUser es el nombre de usuario
svn.tecnoprevisa.com es el nombre de la sesión configurada y guardada en PuTTY
/svnFolder/mirepositorio es la dirección dentro del servidor. En este caso era c:\svnFolder\mirepositorio.
Al pulsar OK, nos pedirá la contraseña y hará un checkout (a veces pide un par de veces la contraseña, pero todavía no he averiguado por qué)
Jota, AKA Crester AKA vazromju