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.
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.
…mmm… hola petia, pero en teoría no debería influir.