Blog de Contraslash (Legacy)

Autenticación a Gogs por SSH

March 17, 2017

Autenticación a Gogs por SSH

Uno de los pasos mas importantes a la hora de realizar despliegue automático es que tu servidor pueda obtener los cambios en su rama respectiva sin necesidad de intervención humana, y por lo general nuestros repositorios son privados, de tal manera que autenticarse por SSH es una excelente opción.

Como primera instancia, en el cliente que recibirá los cambios, en este caso servidor de staging/testing/production debemos generar una llave SSH, para eso utilizamos el siguiente comando

ssh-keygen -t rsa -b 4096 -C "mail@example.com"

Aseguremonos de guardar las llaves en una ubicación que recordemos y que tenga un nombre apropiado. Por defecto se guardan en ~/.ssh/id_rsa

Es importante que cuando nos pida la contraseña paraphrase lo dejemos vacío.

En al ubicación que hayamos escogido, ahora veremos dos archivos

  1. {{nombre llave}}
  2. {{nombre llave}}.pub

Copiaremos el contenido del archivo <nombre llave>.pub y lo pegaremos en Gogs en la siguiente ubicación:

Your Settings -> SSH Keys -> Add Key

En este formulario podremos colocarle un título a nuestra llave y podremos pegar el contenido.

A continuación habilitaremos la llave en nuestro servidor local con el comando

ssh-add {{nombre llave}}

Si tenemos un problema de tipo

Could not open a connection to your authentication agent.

Debemos ejecutar el siguiente comando habilitar el agente ssh

eval `ssh-agent -s`

A continuación editaremos el archivo ~/.ssh/config y añadiremos algo similar a esto

Host {{alias del sitio}} {{host del sitio}}
    HostName {{host del sitio}}
    IdentityFile {{ubicacion de la llave}}/{{nombre llave}}
    User {{usuario gogs}}

Les presento un ejemplo mas claro

Host gogs_server gogs.example.com
    HostName gogs.example.com
    IdentityFile ~/.ssh/id_rsa
    User admin

A continuación podremos clonar nuestro nuestro repositorio utilizando la dirección SSH, que debería verse similar a esto

git@gogs.example.com:admin/repo.git

Y de esta manera ya podremos ejecutar operaciones de git autenticandonos con el usuario que hemos definido.