Configurar un servidor Git con SSH en Ubuntu

Si tienes un pequeño número de miembros del equipo trabajando en algunos proyectos, entonces puedes configurar un servidor Git a través de SSH en tu oficina y trabajar en los proyectos como un equipo muy fácilmente. Usted no tiene que utilizar GitHub o cualquier otro servicio en ese caso. El servidor Git basado en SSH es realmente fácil de configurar y utilizar. En este artículo, voy a mostrarte cómo configurar un servidor Git con SSH en Ubuntu y cómo utilizarlo. Así que, vamos a empezar.

En esta sección, voy a mostrarte cómo configurar un servidor Ubuntu como un servidor Git accesible por SSH.
Primero, actualiza la caché del repositorio de paquetes APT con el siguiente comando:

$ sudo apt update

La caché del repositorio de paquetes APT debería estar actualizada.

Ahora, instala el servidor OpenSSH y Git con el siguiente comando:

$ sudo apt install openssh-server git

Ahora, presiona Y y luego presiona <Enter> para confirmar la instalación.

El servidor OpenSSH y Git deberían estar instalados.

Ahora, crea un nuevo usuario git con el siguiente comando:

$ sudo useradd –create-home –shell /bin/bash git

Todos los repositorios Git se guardarán en el directorio home del usuario git /home/git.

Ahora, inicia sesión como el usuario git con el siguiente comando:

$ sudo su – git

Ahora, crea un nuevo directorio .ssh con el siguiente comando:

$ mkdir .ssh

Ahora, permite que sólo el usuario git tenga permisos de lectura, escritura y ejecución en el directorio .ssh/ de la siguiente manera:

$ chmod 700 .ssh/

Como puedes ver, el usuario git sólo tiene permisos de lectura (r), escritura (w), ejecución (x) en el directorio .ssh/.

$ ls -ld .ssh/

Ahora, crea un nuevo archivo vacío .ssh/authorized_keys como sigue:

$ touch .ssh/authorized_keys

Sólo permite leer y escribir en el archivo desde el usuario git de la siguiente manera:

$ chmod 600 .ssh/authorized_keys

Como puedes ver, sólo el usuario git tiene permisos de lectura (r) y escritura (w) en el archivo .ssh/authorized_keys.

En el archivo .ssh/authorized_keys hay que añadir la clave pública de los usuarios que se quiere que accedan a los repositorios Git en el servidor Git.

Añadir la clave pública del cliente al servidor Git:

Para acceder a los repositorios Git en el servidor Git, el cliente debe añadir su clave pública al servidor Git.

El cliente puede generar un par de claves públicas y privadas de la siguiente manera:

$ ssh-keygen

Pulsa <Intro>.

Pulsa <Enter>.

Pulsa <Introduce>.

Pulsa <Enter>

Ahora, el cliente puede encontrar su clave pública como sigue:

$ cat ~/.ssh/id_rsa.pub

La clave pública del cliente debería imprimirse. Ahora, el cliente puede enviar esta clave pública al gestor (que administra el servidor Git). El gestor puede entonces añadir la clave pública al servidor Git. Entonces el cliente puede acceder al servidor Git.

Digamos que el cliente envió su clave pública al gestor del servidor Git. El gestor subió la clave pública al archivo /tmp/shovon-key.pub en el servidor Git.

Ahora, el gestor del servidor Git puede añadir la clave pública del cliente de la siguiente manera:

$ cat /tmp/shovon-key.pub >> ~/.ssh/authorized_keys

Ahora, el archivo .ssh/authorized_keys debe tener la clave pública del cliente.

Creación de repositorios Git en el servidor:

Los clientes no pueden crear nuevos repositorios Git en el servidor. El administrador del servidor Git debe crear un repositorio en el servidor. Luego, los clientes pueden clonar, empujar/tirar del repositorio.

Ahora, crea un nuevo repositorio Git vacío testrepo en el servidor Git como sigue:

$ git init –bare testrepo

Ahora, el cliente sólo necesita conocer la dirección IP del servidor Git para acceder al repositorio Git testrepo.

El gestor del servidor Git puede encontrar esta información de la siguiente manera:

$ ip a

Como puedes ver, la dirección IP del servidor Git es 192.168.21.185. Ahora, el administrador del servidor puede indicarla a los clientes que trabajarán en el proyecto.

Clonación del repositorio Git desde el servidor:

Una vez que el cliente conoce la dirección IP y el nombre del repositorio Git, puede clonarlo en su ordenador de la siguiente manera:

$ git clone [email protected]:~/>testrepo

Ahora, escriba yes y pulse <Enter>. Tendrás que hacer esto una vez, sólo la primera vez.

El repositorio Git testrepo debe ser clonado desde el servidor.

Se debe crear un nuevo directorio testrepo.

Hacer cambios y empujar los cambios al servidor Git:

Ahora, el cliente puede añadir commits al repositorio testrepo/ y empujar los cambios al servidor Git.

$ cd testrepo/

$ echo «Hello world» > test.txt

$ git add .

$ git commit -m ‘initial commit’

$ git push origin

Añadir un nuevo miembro al equipo:

Ahora, digamos, que bob quiere contribuir al repositorio Git de testrepo.

Todo lo que tiene que hacer es generar un par de claves SSH y enviar la clave pública al administrador del servidor Git.

$ ssh-keygen

Una vez que el gestor del servidor Git tiene la clave pública de bob, puede subirla al servidor Git y añadirla al archivo .ssh/authorized_keys como sigue:

$ cat /tmp/bob-key.pub >> ~/.ssh/authorized_keys

Ahora, bob puede clonar el repositorio Git testrepo desde el servidor de la siguiente manera:

$ git clone [email protected]:~/testrepo

testrepo debe ser clonado.

Se debe crear un nuevo directorio testrepo en el ordenador de bob.

Ahora, bob puede navegar al repositorio Git de la siguiente manera:

$ cd testrepo/

Debería encontrar algunos commits existentes.

$ git log

Ahora, Bob puede hacer su propio trabajo y confirmarlo. Luego, empuja los cambios al servidor.

$ echo «Hello World 2» >> test.txt

$ git add .
$ git commit -m ‘Mensaje cambiado’

$ git push origin

Ahora, otras personas que trabajan en el mismo repositorio pueden tirar de los cambios de la siguiente manera:

$ git pull origin

Debería encontrar los commits que hizo bob.

Así es como se configura un servidor Git con SSH en Ubuntu y se utiliza. Gracias por leer este artículo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *