Crear un servidor Git a través de SSH

Git es un software de control de versiones diseñado por Linus Torvalds, que nos permite manejar un gran número de archivos de una manera simple, controlando diferente versiones, entre muchas otras funcionalidades.

Por ejemplo, Git sirve para proyectos como la red pump.io o incluso para compartir libros. Aunque fue creado con el fin de servir a proyectos grandes de software, puede servirnos para ir guardando los apuntes que tomamos en clase.

Aunque existen servicios que nos ofrecen la posibilidad de crear un repositorio Git público como gitorius o github, puede interesarnos tener nuestro propio repositorio privado. Sea para desarrollar software y liberar la versión definitiva, tomar apuntes en clase, etc. La instalación es bastante simple. Empezaremos en el servidor instalando git-core y si aún no lo tenemos, openssh-server:

apt-get install git-core
apt-get install openssh-server

Crearemos un usuario con el que accederemos a través de SSH y/o Git. Primero instalaremos el cliente openssh-client y accederemos por SSH.

apt-get install openssh-client
ssh usuario@192.168.1.3
sudo su
adduser git

Luego crearemos una clave pública SSH en el cliente y la copiaremos a la carpeta home, del usuario anterior, del servidor:

ssh-keygen
scp ~/.ssh/id_rsa.pub git@192.168.1.3:

Crearemos el directorio .ssh en la carpeta home del servidor y copiaremos en el archivo authorized_keys:

mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys

Modificamos los permisos para que solo podamos acceder nosotros a la clave:

chmod 700 .ssh
chmod 400 .ssh/authorized_keys

Hasta aquí tendremos configurado el acceso a través de SSH sin tener que introducir la contraseña.

Inicialización del repositorio Git:

Crearemos el directorio del repositorio que queremos en la carpeta home del usuario en el servidor e inicializaremos el repositorio:

mkdir repo.git
cd repo.git/
git --bare init

Clonación del repositorio y primer commit

Suponiendo que la dirección IP del servidor es 192.168.1.3, y el directorio del repositorio está en la carpeta home y se llama repo.git, usaremos el siguiente comando para clonarlo.

git clone git@192.168.1.3:repo.git/

Seguidamente crearemos un archivo llamado hello_world.txt y haremos el primer commit:

touch hello_world.txt
git add ./
git commit -u -m"helloworld"
git push origin master

¡Ya tenemos nuestro repositorio funcionando!

El logo lo podéis encontrar aquí creado por Jason Long.

3 Comments

  1. Hola K. No es exactamente cómo Google Drive. Una alternativa libre a Google Drive podría ser ownCloud.

    Git consiste en control de versiones. Cuando se programa un proyecto grande, ten en cuenta que hay mucha gente modificando archivos distintos, los mismos archivos y distintas versiones. Git lo que permite es que juntar todos estos archivos sea fácil y usable. Ímaginate que son 200 personas trabajando en un proyecto y una modifica una línea en un archivo. Simplemente esa envía esa línea y los demás la reciben.

    Esto también puede servir, en lugar de con código, con apuntes. Imagina que tomas apuntes en clase y lo que haces es enviarlos al servidor, para tenerlos allí organizados. Luego desde otro ordenador le pides que te envie la última versión, trabajas sobre ellos, y los vuelves a enviar allí. Esta opción si sería más semejante a Google Drive, Dropbox y todos esos servicios que nos compran nuestra privacidad pagandonos nada. :)

    Un saludo.

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax