Deploy keys - Javiermartinf98/mirepositorio GitHub Wiki

Generar una deploy key.

Se utiliza para lanzar proyectos desde un repositorio en GitHub.com a su servidor usando una clave SSH que otorga acceso a un solo repositorio.GitHub adjunta la parte pública de la clave directamente a un repositorio en lugar de a una cuenta personal, y la parte privada de la clave permanece en su servidor.

-Cualquier persona con acceso al repositorio y al servidor tiene la capacidad de implementar el proyecto.

-Los usuarios no tienen que cambiar su configuración SSH local.

-Las claves de implementación son de solo lectura de forma predeterminada, pero puede otorgarles acceso de escritura al agregarlas a un repositorio.

El código necesario para generar la clave en nuestro terminal linux seria el siguiente:

  • Para crear las claves tanto publica como privada se utilizaria:

ssh-keygen -t rsa

  • Una vez creadas nos pedirá que las guardemos en dicho directorio

Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa)

  • Guardadas en el repositorio tendremos que asegurarlas con una constraseña para identificarse una vez que la queramos usar

Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub.

Con estos pasos ya habremos configurado nuestras key's necesarias para insertarlas en el repositorio de git.

En la imagen, mostramos nuestra clave pública la cual utilizaremos posteriormente en nuestro proyecto

image

Insertar en GIT la deploy Key.

Para acceder a Setting, nos iremos a la esquina superior derecha de cualquier página de GitHub, hacemos click en la fotografía de nuestro perfil y luego en Your repositories.

image

Una vez en nuestros repositorios, seleccionamos el que deseamos y a continuación nos iremos a setting de dicho repositorio.

image

Una vez dentro, nos vamos a la pestaña de "Deploy keys" y volvemos a seleccionar "add deploy key" para añadir nuestra clave.

image

Indicamos el título que deseamos poner a nuestra "deploy key" y a peguamos la clave pública que generamos en nuestra maquina virtual.

image

Una vez terminado pulsaremos "Add key"

Permisos lectura y escritura

Aunque en el ejemplo hemos creado solo una clave, la mejor opción seria crear dos claves, una solo con permisos de lectura, y otra con permisos de lectura/escritura. Esto se seleccionaria al añadir la key al repositorio:

image

Activando esta casilla tendremos los permisos de escritura también.

Deploy Keys para varios repositorios

Si se utilizan varios repositorios en un servidor, se deberán generar claves para cada uno de ellos. No se puede utilizar una misma clave para varios repositorios.

Dentro de la carpeta .ssh del servidor comprobaremos que tenemos un archivo llamado config, si no está deberemos crearlo (para acceder se usa el comando cd ~/.ssh/config) , dentro de ese archivo hay que agregar una entrada de alias para cada repositorio. Por ejemplo:

image

Host github.hpe.com-DeployKeysPrueba El alias del repositorio.

Hostname github.hpe.com Configura el nombre de host que se utilizará con el alias.

IdentityFile=/home/user/.ssh/clave privada En esta línea se indica la ruta de nuestra clave privada ssh.

Tendremos que darle los permisos a la clave privada , se deberá dar el permiso 600.

ls -la ~/.ssh Con este comando veremos los permisos que tienen cada clave.

Usamos el siguiente comando chmod 600 ~/.ssh/id_rsa sobre la clave privada, con estos permisos les daremos permisos de lectura y escritura al usuario.

Como regla general, puede establecer los siguientes permisos en el directorio ssh y sus archivos (claves privadas, claves públicas, hosts conocidos, archivo de configuración ssh, etc.)

Elemento Permiso
directorio .ssh 700 ((drwx——)
claves públicas 644 (-rw-r–r–)
claves privadas 600 (-rw——-)
authorized_keys 600 (-rw——-)
known_hosts 600 (-rw——-)
config 600 (-rw——-)

Una vez configurado el archivo tendremos acceso al repositorio mediante SSH, que utilizará la clave asignada a ese alias. Por ejemplo, para poder clonar el repostitorio tendrÍamos que usar la ruta mas el alias:

[email protected]:+USER/ALIASREPO.git

[email protected]:alejandro-redondo/PruebaSonar.git

image