domingo, 9 de octubre de 2022

GIT - 3 - GITHUB - Clonar/Subir repositorio - Gestión de Credenciales.

 ¿Que es Github?


Es un portal creado para poder alojar el código de las aplicaciones de cualquier desarrollador. Utiliza el código de control de versiones Git que estamos viendo, que fue creado por Linus Torvalds.

No es el único que existe, ya que existen servicios similares como Bitbucket y GitLab.

Lógicamente antes de empezar a usarlo tenemos que darnos de alta en el servicio

Una vez registrado puedes hacer multitud de cosas, como por ejemplo crear tu propio repositorio, escribir el código en un navegador web, muy similar a  Visual Studio Code o trabajar en local desde el ordenador. 

Para ver como funciona vamos a crear un repositorio ficticio nuestro, lo clonaremos, trabajaremos con el en local y finalmente lo volveremos a subir a Github. Existen también infinidad de repositorios creados por la comunidad que puedes utilizar de la misma forma, es decir, buscas el que necesites y lo clonas a tu ordenador como vamos a ver a continuación.


Crear un repositorio y subirlo a Github



Si lo que quieres es clonar un repositorio que ya existe en Github o en cualquier otro servidor, para trabajar con él en local.

Por ejemplo este programa para resolver sudokus:

$ git clone https://github.com/kying18/sudoku.git
Copiará el contenido del repositorio dentro del directorio donde hayas lanzado 
el comando.
Si lo que quieres es crear tu propio repositorio y subirlo a Github.

Lo primero es abrir el navegador, ir a Github y logearnos.

Luego se pueden utilizar varias opciones:

a) Con una cuenta en esta plataforma, cuyo registro es gratuito, puedes subir archivos a GitHub. Para ello primero crearemos un repositorio en Github de la siguiente manera:

1.- Aunque existen varias formas, una de ellas es la siguiente. Utiliza el menú desplegable de la esquina superior derecha, y seleccionas tus repositorio. 



Luego le das al botón "New"  o  "Nuevo" según tengas configurado el idioma.



Se abrirá la pantalla donde podremos seleccionar varias opciones. La más importante es el nombre del repositorio. En este caso le he llamado "Prueba" y lo he dejado como Público para que cualquiera en la web pueda verlo y trabajar con él. También podemos añadir una descripción. En la parte inferior le damos al botón "Crear Repositorio".




En la siguiente pantalla nos darán información útil de como crear un repositorio nuevo o subir uno que ya tengamos a través de la línea de comandos a este proyecto. Lo que nos importa en este caso es apuntar el enlace al repositorio ya que nos será útil posteriormente.




Aunque lo puedes hacer antes de crear el proyecto, en este ejemplo vamos a crear el archivo README junto con la creación del repositorio (En este archivo puedes usar el lenguaje markdown para darle formato).  Ya un terminal de nuestro ordenador ponemos el repositorio en marcha.

Creamos el archivo readme.md que contendrá instrucciones de como funciona
el programa y como ponerlo en marcha.
$ echo "# Aquí Irán las instrucciones." > README.md

Ahora iniciamos el repositorio.
$ git init 

Creamos un archivo más para añadir al repositorio, para ver como funciona
el ejemplo.
$ touch main.py

Lo añadimos todo al árbol de trabajo y al stage.
$ git add .

Realizamos una confirmación.
$ git commit -m "Primer y único commit"

Como una de las cosas que recomienda Github es cambiar el nombre de la 
rama master a main, vamos a hacerlo. Ya ha habíamos visto una opción 
que era usar justo después del git init, el comando git checkout -b main.
Ahora haremos lo mismo pero ya al final con el siguiente comando:
$ git branch -M main

Ahora viene lo importante. Le decimos a git que añada el repositorio local,
el que tenemos en el ordenador, a github, que es el repositorio remoto. 
Aquí es donde tenemos que tener la ruta o enlace al repositorio remoto que 
apuntamos en un paso anterior.
$ git remote add origin https://github.com/Usuario/Prueba.git

* Usuario es tu nombre de usuario en Github

Para finalizar ejecutamos los cambios con el siguiente comando:
$ git push -u origin main
nos pedirá nuestro nombre de usuario y luego la contraseña de github.
Sin embargo cuando le das la Intro.

.....SORPREEEEEEEESAAAAAAA !!!!!
Support for password authentication was removed on August 13, 2021.


La autenticación basada en contraseña para Git se quitó en favor de métodos de autenticación más seguros, así que tendremos que usar uno de ellos para identificarnos ante el servidor y poder enviar el repositorio a Github.

Vamos a verlos:

1.- Creación de un Token de acceso personal.

Para entendernos, un Token es un código de seguridad que nos permite autenticarnos en Github cuando usamos la línea de comandos en el terminal. Como obtenerlo está muy bien explicado en el enlace a la página de documentación de Githubno me detendré a comentar como hacerlo.  Eso si en cuanto la página lo genere guárdalo en algún sitio, porque tal como dice el aviso no te lo volverán a mostrar de nuevo.

Una vez que lo tengamos ya podemos subir el repositorio, proseguimos donde lo dejamos:

$ git push -u origin main
Username: tu nombre de usuario
Password: tu token de acceso 
El problema de los tokens de seguridad es que, al igual que la contraseña hay que introducirlo cada vez que necesitemos conectarnos al servidor de github a través de la línea de comandos, bien sea porque queramos clonar un repositorio o subir el nuestro propio.  

Una forma de mitigar esto es usar un ayudante de credenciales que se almacena en la cache del ordenador para un determinado tiempo, de forma estándar 15 minutos. 

    $ git config --global credential.helper cache

Si quieres establecer un determinado periodo de tiempo, por ejemplo 2 horas hay que usar el parámetro  --timeout. (el tiempo en segundos)

    $ git config --global credential.helper cache --timeout=120

Puedes obtener más información en "Caching your Github credentials in Git".




Seguimos los siguientes pasos:

a) generar la llave privada y pública.
$ ssh-keygen -t ed25519 -C "your_email@example.com"
Dentro de las comillas ponemos nuestra dirección de correo, la que usamos al registrarnos en Github.

b) Añadir la llave ssh al agente ssh

- Nos aseguramos de que el agente está activo:
# start the ssh-agent in the background
$ eval "$(ssh-agent -s)"
> Agent pid 59566
- Agregamos nuestra llave ssh privada al agente para poder usarla. Si has creado tu clave con un nombre diferente o si estas agregando una clave existente que tenga un nombre diferente, reemplaza id_ed25519 en el comando con el nombre de tu archivo de clave privada.
Si has puesto contraseña a la clave cuando la generamos, el sistema de la pedirá en este momento.

    $ ssh-add ~/.ssh/id_ed25519


a) Abrimos la clave pública con cualquier editor de texto y la copiamos. Si no le has cambiado el nombre es el archivo id_ed25519.pub

b) En la esquina superior derecha de cualquier página, haz clic en la foto del perfil y, luego, en Settings (Configuración).

settings git

A la izquierda, en la sección que pone "Acess", haz click en "SSH and GPG KEYS"

c) Hacemos click en "New SSH Key" o en "Add SSH Key"

d) En el campo "Título", agrega una etiqueta descriptiva para la nueva clave. Por ejemplo, si estás utilizando una computadora portátil personal, puedes poner "Laptop personal".

e) Seleccionamos el tipo de clave "Autenticación" o "Firma". Si no sabes cual usar déjala en autenticación. Puedes encontrar más información aquí

f) Pega tu llave pública en el campo donde pone "Key"

key field



g)  Para finalizar haz click en "Add SSH Key"

botón añadir llave

Si se te solicita, confirma tu contraseña en GitHub

Para comprobar si todo ha ido correcto probáremos la conexión ssh con github siguiendo las instrucciones de este enlace tal como indica la documentación de github.

IMPORTANTE:

Recuerda cuando clones tus repositorio tomar la opción de copiar la url por SSH y no por HTTP, sino, no estarás usando la llave ssh que hemos creado.

Por ejemplo, para clonar el repositorio del sudoku que puse al principio utilizando la conexión SSH seria:

    $ git clone git@github.com:kying18/sudoku.git


Si volvemos al repositorio que dejamos preparado para subir a Github, ya vimos como subirlo usando un token de seguridad, ahora usando SSH el proceso se hace directamente (aunque tendrás que poner la contraseña de la llave la primera vez que lo utilices seguramente). El comando sigue siendo el mismo, solo que ahora va automáticamente:

    $ git push -u origin main



3) Si trabajas con Visual Studio Code el tema es sencillo también. Puedes crear el repositorio como hemos antes y una vez que tengas el proyecto finalizado le das al icono de Git o haces que se muestre yendo al menú view --> Source Control y ejecutas la opción de push y sigues las instrucciones. 




No hay comentarios:

Publicar un comentario