Como instalar un repositorio privado y remoto con git en servidor con ssh + clientes linux

Como instalar un repositorio remoto con git en servidor + clientes linux

instalando_git_servidor en linux

instalando git servidor en linux

La siguiente configuración fue probada en debian lenny como servidor y ubuntu , trisquel 4.5 como maquinas clientes.

Nota1:

Para otras distribuciones de Linux se recomienda adaptar los pasos a las variantes y caracteristicas de la configuración de git especificas de nuestra distribución.

Nota2:

Se entiende que el lector tiene conocimientos básicos de linux y su interacción con con el CLI, conexiones ssh, claves publicas y privadas.

Previo y Configuración del servidor

El Git al ser un sistema manejador de versiones distribuido y no centralizado(como subversión), lo único necesario antes de empezar es: tener git en el servidor y en las máquinas clientes.

Por cuestión de seguridad y facilidad de la administración cuando existen múltiples desarrolladores, lo que se recomienda es crear un usuario git en el S.O. y apuntar sus archivos(que seran capetas de proyectos) a la carpeta de opciones /opt/ y su interprete hacia el interprete proporcionado por git.

adduser #introducimos los datos que nos pide 

Editamos el registro del usuario git el archivo /etc/passwd quedan la configuración algo como:

git:x:1000:1000::/home/git:/usr/bin/git-shellgit:x:1000:1000::/home/git:/usr/bin/git-shell 

Para concluir con la configuración del servidor hay que darle al usuario git permisos para escritura en el directorio /opt/ y debemos también agregar un usuario administrador que sera el que pueda crear nuevos proyectos, al que llamaremos(usuario_admin) .

Agregando nuevo proyecto

Una vez esto, desde alguna máquina cliente creamos una carpeta de nuestro nuevo repositorio, el cual sera llamado ‘miApp’, y le agregamo como subfijo ‘.git’ ya que por convenio, los nombres de los repositorios básicos suelen terminar en ‘.git’, por lo que lanzaremos:

mkdir miApp.git
cd miApp.git
git init 

Agreando proyecto ya existente

Si ya tenemos un proyecto existentes(miApp) podemos realizar un clone local con la opción  --bare , etonces ejecutamos la siguiente consulta:

git clone --bare miApp miApp.git
# Tras esto tendrás una copia de los datos en tu carpeta 'miApp.git'
# Siendo el proceso mas o menos equivalente a haber realizado:
cp -Rf miApp/.git miApp.git
# Realmente hay un par de pequeñas diferencias en el archivo de configuración;
# pero, a efectos prácticos es casi lo mismo.

 

Partiendo del concepto que el git es un sistema distribuido y que la carpea.git en el servidor es en esencia nuestra carpeta .git( con pequeñas diferencias ), nos podemos enviar los archivos de nuestra carpeta .git a nuestro servidor(olvidándonos de cosas como git clone —bare mi_proyecto.git):

scp -rp miApp.git usuario_admin@miDominio.net:/opt/ 

Ojo: no podremos utilizar el usuario git ya que por seguridad el shell-git desactiva las conexiones ssh p.e.

ssh git@miDominio.net
# PTY allocation request failed on channel 0 fatal: unrecognized command 'gitosis-serve schacon@quaternion' Connection to gitserver closed. 

Agreando brazo origin y finalizando la configuración(proyecto existente)

Ahora desde la misma máquina cliente podemos añadir la rama-remota (remote branch) mi-servidor (esto estando dentro de la carpeta miApp) :

git remote add mi-servidor ssh://git@miDominio.net:/opt/miApp.git

Nota: observe que el brazo se agrego hacia el usuario git.

Clonando proyecto existente en el servidor:

Ahora desde la misma máquina cliente podemos añadir alguna rama (branch) mi-servidor (esto estando dentro de la carpeta miApp) :

git clone ssh://git@miDominio.net:/opt/miApp.git

 

 

 

Probando que todo funcione correctamente:

Listo lo ultimo es probar que todo funcione:

touch README git add README git commit -m "message for change log"
#Empujamos cuambios en la rama mi-servidor
git push -u origin mi-servidor

 

Fuentes:

Anuncios

3 thoughts on “Como instalar un repositorio privado y remoto con git en servidor con ssh + clientes linux

  1. Pingback: Nota para el futuro » Instalación Git + GitWeb ( I )

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s