Introducción


Autenticación

Hay un detalle que todavía no hemos comentado. ¿Cómo realiza git la autenticación de usuarios? Veámoslo.

Protocolos de acceso


Local

El acceso local es trivial y sin autenticación.

$ git clone /opt/git/project.git

Protocolo GIT

Puerto 9418, por red y sin ningún tipo de autenticación.

$ git clone git://git.kernel.org/pub/scm/git/git.git

Protocolos de acceso


Protocolo HTTP/HTTPS

El más sencillo y compatible para acceso en modo lectura.

$ git clone http://example.com/gitproject.git

Protocolos de acceso


Protocolo SSH

Es un acceso por red y autenticado.

$ git clone user@server:project.git

Se consigue el acceso conjunto de usuarios emparejando un usuario del sistema con una gestión de claves públicas/privadas SSH. Existe software que ya implementa este funcionamiento, como por ejemplo gitosis o gitolite.

Autenticación por clave pública/privada


El protocolo más utilizado cuando necesitamos autenticación es SSH. La autenticación se realiza mediante clave pública/privada. Veamos un ejemplo de generación de llaves SSH.

$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a schacon@agadorlaptop.local

$ ls ~/.ssh
id_rsa       known_hosts
config       id_rsa.pub

Autenticación por clave pública/privada


La clave pública id_rsa.pub es la que utilizaremos para conseguir acceso a los repositorios.

$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNTQzEK7jgNb5erGMKOOI9bP
ELlY0ut6ZuqXmVrzwlJ9pTLS2tpox7gFSUGVwqXRusgpbEpcoBcOKqdXKuVCZb
p8YX56+OP07lsE5CCMJmTuO9Dcg2z+Pq4iW8/hBD3+N+891UPRbXWtggrKdTPM
s5bnlpxa7kFdbCEG7z3ShZIyaRJW2oj3+aSxc33I+pHiQZ5yjYh5AspJLroaX/
7MKHrFRq2NeP1FCU0jz1wkO8ZPDYadKn03dtkVY7/wfR//3pq27ckZiKFLref2
gwTBCVCe7ZAqWQHYekNjq+QBstULMmDM0VgmBueQGLEjApDJhXDQgYPu5A2zUK
0uR8vLNJ dave@inuik

Entornos de hosting como github, gitorious o bitbucket solicitan una clave como ésta para hacer push al repositorio.

Hosting de proyectos en la nube


Github

Es la plataforma de hosting de proyectos Git más utilizada hoy en día.

Github: página de usuario Github: gestión de claves SSH Github: ejemplo de clave SSH

Cambia de foto con las teclas: y

Hosting de proyectos en un servidor propio


Gitolite y GitlabHQ

Podemos conseguir algo similar a github en nuestro servidor propio con las ventajas e inconvenientes que eso supone. Simplemente comentaros que necesitáis 2 proyectos de software libre:

http://gitlabhq.com Características de GitlabHQ Dashboard de usuario Pantalla de ejemplo de un proyecto

Cambia de foto con las teclas: y