Instalar un repositorio git en un hosting remoto

Podemos montar un repo de git en cualquier máquina remota utilizando dos protocolos: http y ssh.

Franz Marc

archivado en: varios / 10 diciembre, 2014

Ojo: Entrada en construcción

Con ssh, Secure SHell, que es un protocolo-programa para acceder a máquinas remotas, podemos instalar un repositorio git en un servidor. También se puede hacer por http, pero eso lo explico otro día. La jugada es la siguiente.

1. Creamos las llaves ssh

Lo primero es crear un par de llaves ssh, que en esencia consisten en dos ristras alfanuméricas que identificarán a nuestra máquina con las demás. Una ristra es nuestra identificación privada (private key), el id_rsa.pub, y otra la clave pública (public key), el id_rsa. Nuestra identificación privada es como si fuera una llave y la pública como si fueran las distintas puertas que iremos colocando en las máquinas remotas.

En windows, y siento andar siempre tan a la carrera que no me dé tiempo de explicarlo también para linux, abrimos git, que lleva instalado un tiny ssh, vamos al directorio .ssh (en C/Users/nombre usuario) y escribimos

$ ssh-keygen

Nos pregunta a continuación que nombre le queremos poner a ese par de llaves. Ponemos el que sea o lo dejamos vacío:

Generating public/private rsa key pair.

Enter file in which to save the key (/c/Users/marcos/.ssh/id_rsa): EjemploLlaves

Luego nos pedirá una contraseña para ese par de claves (una passhprase).

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Y ya estarían listas:

Your identification has been saved in EjemploLlaves.

Your public key has been saved in EjemploLlaves.pub.

Es muy importante que guardemos este par de llaves como agua de mayo, pues son el acceso a todas las máquinas con las que nos vayamos a conectar.

2. Copiamos las llaves

Ahora tenemos que copiar la llave pública (id_rsa.pub) en la máquina donde que queremos instalar el repo.

En el servidor nos indican qué puerto ssh tienen abierto, pues el que hay por defecto, el 22, se suele cambiar por seguridad. Con nuestro nombre de usuario y nuestra contra, podemos conectarnos escribiendo algo así en la consola de git.

$ ssh -p NUMEROPUERTO USUARIO@DOMINIO.ALGO

Por ejemplo,

$ ssh -p 232 zutanito@miscositas.com

Nos pide la contraseña, la ponemos y  y ya estaríamos «dentro» del server, como podemos comprobar si ejecutamos el comando ls, que lista el contenido de un directorio. En la raíz, es decir, por encima de public_html, si no existe, creamos una carpeta llamada .ssh y le cambiamos los permisos a 700:

mkdir /.ssh/authorized_keys

chmod 700 .ssh

Ahora tenemos que crear un archivo authorized_keys, que es donde guardaremos la clave pública y le cambiamos los permisos a 600:

cd .ssh

touch authorized_keys

chmod 600 authorized_keys

Ahora, o bien descargando el archivo authorized_keys y volviéndolo a subir por ftp o bien usando el comando scp de ssh, copiamos ahí la clave pública, que recordemos es la que lleva por terminación .pub.

Nota: el cambio de número de puerto puede dar la murga, por lo que es recomendable añadir un archivo denominado config en nuestra carpeta .ssh, en el cual especificaremos el puerto que debe usar para determinada url.

Host miscositas.com

Port 232

3. Incializamos el repo

Conectados por ssh, creamos el directorio donde queremos poner el repositorio remoto.

cd public_html

mkdir proyectoRemoto.git

cd proyectoRemoto.git

Inicializamos ahí un repositorio vacío, sin carpeta de trabajo, con el flag --bare

git --bare init

Nota: la primera vez que nos conectemos por ssh al server nos dirá algo así como:

$ ssh -p 232 zutanito@miscositas.com

The authenticity of host '[miscositas.com]:232 can't be established.

RSA key fingerprint is ****

Are you sure you want to continue connecting (yes/no)?

Dont panic: Le decimos que yes y tras escribir la passhprase que pusimos cuando generamos el par de llaves nos generará de forma automática en el archivo known_hosts de nuestro directorio local .ssh el código necesario para que el tinglado funcione.

4. Subimos el primer commit

Salimos de la sesión ssh y nos ponemos a trabajar ya en local. Creamos un repo local en un directorio:

$ mkdir proyectoLocal

$ cd proyectoLocal

$ git init

Hacemos un add, un commit y definimos el origin del repo.

$ git add .

$ git commit -m "primer commit"

$ git remote add origin ssh:pixelte@pixelteca.com:NumeroPuerto *****************./proyectoRemoto.git

Nota: si nos liamos con la dirección del origin, la forma más rápida de cambiarlo es modificando directamente el archivo .git>config que se ha creado en el directorio del proyecto.

Y ale op, ya deberíamos poder gitear por ssh en el hosting remoto.

|| Tags:

valoración de los lectores sobre Instalar un repositorio git en un hosting remoto

  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • 4.5 sobre 5 (2 votos)

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

2 respuestas a “Instalar un repositorio git en un hosting remoto

  1. Hola Marcos,
    Muy útil articulo, pero tengo problemas, porque en mi caso se trata de reinstalar y reiniciar el GIT. Tenemos las claves SSH ya generadas, por lo cual me da error.