Cómo configurar Git y GitHub

Antes de empezar a trabajar con Git, tendremos que configurar correctamente el entorno y las conexiones con GitHub. Por un lado, habrá que establecer una serie de parámetros en Git para determinar quién es el usuario local, su mail, así como algunas preferencias.

Este artículo forma parte de nuestra serie donde te contamos todo lo que necesitas saber para adquirir las competencias necesarias para trabajar con Git

En cuanto a GitHub, se trata de un servidor remoto donde habrá repositorios con información sensible, por lo que tendremos que realizar también algunas configuraciones en los protocolos de comunicación para determinar quién se conecta a los repos y con qué permisos.

Para seguir este artículo tienes que haber instalado Git previamente, y creado una cuenta en GitHub. Te recomendamos la lectura de nuestro artículo de Instalación y herramientas para utilizar Git y GitHub antes de continuar con el de configuración de Git.

Para llevar a cabo la parte práctica del artículo tendrás que usar la terminal de macOS o Linux o git bash de Windows.


Configuración de Git

Ver configuración de Git

Antes de empezar a tocar los archivos de Git, tenemos que saber dónde tenemos la configuración para saber qué opciones estamos modificando. Para ellos acudimos al siguiente comando, que nos va a listar todas las configuraciones de Git:

git config --list

Si en algún momento durante la configuración tienes dudas de si lo estás haciendo bien o mal, te recomiendo que acudas a este comando.

Usuario y mail – git config user.name/user.email

Hay que introducir un usuario, que será el responsable de las acciones de Git. Lo recomendable es poner tu usuario y correo de GitHub.

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

Git tiene tres archivos de configuración que podremos modificar en función si queremos que se aplique a nivel sistema, usuario o repositorio:

  • /etc/gitconfig contiene los valores para todos los usuarios del sistema. Se modifica con la opción --system.
  • ~/.gitconfig es el archivo específico de cada usuario. Se modifica con la opción --global
  • .git/config. En la propia carpeta del repositorio. Argumento --local. Si estamos dentro de un repositorio es el que toma por defecto.

Cada nivel sobreescribe los valores del nivel anterior. Así lo que configuremos a nivel repositorio tendrá prioridad sobre lo que tengamos a nivel usuario, y éste sobre el sistema. Un ejemplo de configuración del ~/.gitconfig sería:

[filter "lfs"]
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
[user]
	name = "John Doe"
	email = johndoe@example.com
[credential]
	helper = wincred
[core]
	autocrlf = true

Fíjate que al introducir los comandos anteriores, habrán cambiado aquí los valores del apartado user.

Editor de Texto – git config core.editor

Es posible elegir el editor de texto que queremos que use Git por defecto cuando tengamos que editar algún archivo. Es lo recomendable si no queremos resolver operaciones como rebase desde la terminal.

git config --global core.editor "code --wait"
git config --global core.editor "'C:\Program Files (x86)\Sublime3\Sublime Text 3\sublime_text.exe' -w"

La opción de code --wait es para que la terminal se quede esperando a que modifiquemos el archivo. En nuestro caso tenemos instalado Sublime Text 3, por lo que redirigimos Git a su ejecutable. A continuación corre git config --global -e para abrir el archivo de configuración global y comprueba que está usando el editor seleccionado.

Configuración del editor de texto de Git
Configuración del editor de texto de Git

En la siguiente tabla tienes el comando necesario para el editor de código que quieras usar:

Editorconfig command
Atomgit config --global core.editor "atom --wait"
emacsgit config --global core.editor "emacs"
nanogit config --global core.editor "nano -w"
vimgit config --global core.editor "vim"
Sublime Text (Mac)git config --global core.editor "subl -n -w"
Sublime Text (Win, 32-bit install)git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w"
Sublime Text (Win, 64-bit install)git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w"
Textmategit config --global core.editor "mate -w"
Tabla de configuraciones del editor de texto para Git. Fuente

Autocrlf – git config core.autocrlf

Si vamos a trabajar con múltiples usuarios en un mismo repositorio, habrá que tener en cuenta algunas consideraciones, ya que es posible que nos surjan inconvenientes si hay usuarios con sistema operativo Windows y otros con sistema operativo macOS/Linux (basados en Unix).

En Windows el salto de línea se representa mediante CR (Carriage Return) + LF (Line Feed), mientras que en en sistemas macOS/Linux únicamente se agrega LF. Por tanto, el usuario de Windows tendrá que eliminar el carácter CR al subir su código al repo y añadirlo al descargarlo. Por supuesto esto es inviable y forma parte de la configuración automática de Git.

En el caso de Windows tendremos que poner la propiedad autocrlf a true. En el caso de macOS/Linux a input. Estos últimos no agregan el carácter de CR, pero si el usuario introduce manualmente CR o el editor de texto lo añade, Git tendrá que eliminar el caracter.

Windows

git config --global core.autocrlf true

macOS/Linux

git config --global core.autocrlf input

En la documentación de Git tienes todas las opciones de configuración (que no son pocas). Algunas interesantes serían la configuración de herramienta para manejar los merges, colores de la terminal o alias para ahorrarnos tiempo en la escritura de comandos.


Configuración con GitHub

Puesto que GitHub será nuestro sistema de almacenaje en la nube de los repositorios, necesitaremos establecer unas comunicaciones seguras entre los repos locales y los remotos. Para ello tenemos dos opciones:

  1. Autenticación mediante SSH (Secure SHell): se trata de un protocolo de seguridad de red que establece conexiones cifradas entre dos dispositivos. Se utiliza para la autenticación de servidores.
  2. Autenticación mediante PAT (Personal Access Token): es una alternativa de autenticación a SSH que utilizan plataformas como GitHub o Bitbucket. Se trata de tokens de acceso personal que se generan para permitir a los usuarios acceder a los repositorios. Se utilizan en lugar de las contraseñas para autenticar en nombre del titular del token.
¿Qué es SSH?

El protocolo de comunicación SSH (Secure Shell) es un protocolo de red criptográfico diseñado para permitir la comunicación segura y protegida entre dos dispositivos a través de una red. SSH proporciona una forma segura de autenticación, cifrado y privacidad en la comunicación. Algunas características clave del protocolo SSH son:

  1. Autenticación segura: SSH utiliza técnicas de autenticación criptográfica para verificar la identidad del cliente y del servidor. Esto ayuda a prevenir ataques de suplantación y garantiza que solo los usuarios autorizados puedan acceder a un sistema remoto.
  2. Cifrado de datos: SSH cifra los datos transmitidos entre el cliente y el servidor, lo que garantiza que la información confidencial no sea accesible para terceros. Utiliza algoritmos de cifrado fuertes para proteger la integridad y la confidencialidad de los datos.
  3. Canal seguro: SSH establece un canal seguro y encriptado a través del cual se transmite la información. Esto protege contra ataques de escucha y manipulación de datos durante la comunicación.
  4. Reenvío de puertos: SSH permite el reenvío seguro de puertos, lo que facilita la conexión a servicios y recursos internos en una red a través de Internet de manera segura.
  5. Ejecución de comandos remotos: SSH permite ejecutar comandos y programas en un sistema remoto sin necesidad de estar físicamente presente en ese dispositivo. Esto es especialmente útil para la administración remota de servidores y sistemas.
El protocolo SSH se utiliza ampliamente en entornos de administración de sistemas, desarrollo de software, operaciones de red y cualquier situación en la que se requiera una comunicación segura y autenticada entre dispositivos. Proporciona una forma confiable de acceso remoto y transferencia de datos segura.

¿Por cuál me decanto? Siendo prácticos, si siempre vamos a trabajar con la misma máquina, lo mejor es configurar SSH, que es el protocolo de comunicación estándar para una gran cantidad de herramientas, y ofrece una autenticación más segura. Ahora bien, si quieres configurar la autenticación de forma sencilla, utiliza un token. Además, te resultará más práctico si trabajas con muchas máquinas a la vez, puesto que podrían compartir el mismo token, aunque no sería lo recomendable desde el punto de vista de seguridad.


Configuración de SSH

Para poder trabajar cómodamente con GitHub y sus repositorios privados, tendremos que configurar las claves SSH de tal forma que la transferencia de commits se realice en un entorno seguro y el servidor de GitHub tenga en conocimiento que el ordenador desde el que nos comunicamos es fiable. Además, será una forma de autenticarnos sin tener que estar introduciendo la contraseña cada vez que realizamos un push.

Instalación de SSH

En macOS y Linux ya viene por defecto instalado SSH, por lo que podrás utilizarlo sin problemas desde la terminal.

Sin embargo, desde Windows es posible que no lo tengas operativo, por lo que te dejo aquí una guía para descargar y configurar OpenSSH: https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui#install-openssh-for-windows

Tendremos que realizar las siguientes operaciones:

  1. Generar en local una clave pública y privada para conectarnos al servidor de GitHub mediante el protocolo SSH.
  2. Le diremos a GitHub cuál es la clave pública asociada a la privada, de tal forma que podamos realizar una conexión segura al servidor de GitHub.
Conexión SSH a Git
Conexión SSH a Git. Fuente

Primero comprobamos las claves ssh que ya tengamos en local:

ls -al ~/.ssh

Los nombres predeterminados de claves publicas suelen ser id_rsa.pub, id_ecdsa.pub e id_ed25519.pub. En caso de que nos haya salido error, es que no tenemos ninguna clave creada, y por tanto todavía no existe la carpeta ~/.ssh.

Para crear una clave SSH corremos el siguiente comando. Te pedirá una contraseña (passphrase) para que protejas la clave privada de terceros que intenten acceder a la misma. La seguridad que estamos aplicando es suficiente por lo que simplemente presiona enter.

Usa el mismo correo que tu cuenta de GitHub, se coherente y evita futuros problemas.

ssh-keygen -t ed25519 -f ~/.ssh/git_workshop -C "johndoe@example.com"
SSH clave pública
SSH clave pública
  • -t es el algoritmo de SSH. ed25519 es un tipo de algoritmo para la generación de la clave, y es el que viene por defecto en la documentación de GitHub, por lo que será el que utilizaremos. También puedes usar rsa de 4096 bits (ssh-keygen -t rsa -b 4096).
  • -f es el archivo donde queremos que escriba (~/.ssh/id_nombre_algoritmo por defecto). Nos pedirá justo después un nombre si no lo habíamos especificamos con anterioridad.
  • -C utiliza tu correo de usuario de GitHub.

Más información sobre los argumentos de ssh-keygen.

Se han generado dos archivos. Uno con extensión .pub y otro sin extensión. El .pub es la clave pública, y será el que compartiremos con GitHub. Y el otro archivo es la clave privada, que jamás tendremos que compartir con nadie.

Vamos a comprobar que el ssh-agent está funcionando. El ssh-agent puede usar las claves para iniciar sesión en otros servidores sin que el usuario escriba una contraseña nuevamente.

eval "$(ssh-agent -s)"
SSH agent
SSH agent

Y añadimos al agent la clave ssh que acabamos de generar:

ssh-add ~/.ssh/key_file_name
ssh key file
ssh key file

Bien, ya solo queda la configuración con GitHub:

  1. Logate y accede a Settings -> Access -> SSH and GPG Keys
  2. Crea una nueva clave SSH. Ponle un título descriptivo para identificar el ordenador desde el que accedes a GitHub. Pega en el cuadro de la calve todo lo que hay en el archivo .pub.

También podemos imprimir por pantalla la clave pública y copiarla.

cat ~/.ssh/key_file_name.pub
Configuración SSH en GitHub
Configuración SSH en GitHub

Finalmente, comprobaremos que la conexión entre nuestro ordenador y el servidor de GitHub es correcta, y ya podemos usar SSH.

ssh -T git@github.com
Comprobación conexión SSH con GitHub
Comprobación conexión SSH con GitHub

Acabamos de configurar la conexión al Git de nuestro ordenador local con el servidor remoto de GitHub.


Configuración de token

PAT es una forma alternativa de autenticación utilizada en plataformas de desarrollo colaborativo, como GitHub o Bitbucket. Los PAT son tokens de acceso personal que se generan para permitir a los usuarios acceder y realizar acciones en una cuenta o repositorio específico en nombre del titular del token.

GitHub te permite crear tokens para acceder a todos los repositorios (classic) y tokens para dar permisos a repositorios específicos (fine-grained). Por sencillez, nosotros vamos a configurar el classic, aunque aquí tienes la guía para configurar también el fine-grained.

Accede a Settings -> Archieves -> Developer settings -> Personal access tokens -> Tokens (classic) -> Generate new token.

Ponle un nombre descriptivo en Note y añádele una expiración. Si sabemos lo que va a durar el proyecto, sería lo recomendable. Después de ese intervalo dejaría de funcionar.

A continuación establecemos los permisos que deseemos. En principio los de repo serían suficientes. Se recomienda siempre no dar permisos de más. Aquí tienes un mayor detalle de los permisos. Finalmente Generate token.

Configuración de token en GitHub
Configuración de token en GitHub

Ahora la próxima vez que se necesite autenticación en GitHub, como por ejemplo en un clone de un repo privado, nos va a pedir que introduzcamos el token. Eso sí, será una única vez.

Registro de token GitHub desde local
Registro de token GitHub desde local

En caso de no disponer de interfaz gráfica, Git nos dejará introducir el nombre de usuario de GitHub y el token como contraseña:

Comprobación de la configuración del token en GitHub
Comprobación de la configuración del token en GitHub

Ya tendríamos toda la configuración el acceso a GitHub mediante PAT… a no ser que hayamos escogido fine-grained y no tengamos permisos para interactuar con ciertos repositorios.


Permisos de usuario en GitHub

Hemos estado realizando configuraciones del Git local y de acceso a repositorios del propio usuario, pero ¿Y si queremos acceder a repos de otros usuarios? ¿Y si queremos dar acceso a algunos usuarios a nuestros repos?

Aquí tienes una tabla resumen con las acciones que tienes que llevar a cabo en cada caso

CasoConfiguración
Repo público de un terceroNada, podemos leer y lanzar pull-request sin problema
Repo privado del que queremos accesoEl usuario administrador del repo tendrá que añadirnos como colaborador
Tenemos un repo privado y queremos dar acceso a un usuarioIgual que el caso anterior, le añadimos como colaborador.
Tenemos un repo privado y queremos dar acceso a un usuario pero únicamente permisos de lecturaPor defecto no es posible, salvo en organizaciones
Tabla de casos para otorgar permiso de usuarios en GitHub

Para añadir colaboradores al repositorio vamos a Settings (del repo) -> Access -> Collaborators -> Add people.

Añadir personas a un repositorio privado de GitHub
Añadir personas a un repositorio privado de GitHub

Resumen de pasos a seguir

  1. Git instalado y cuenta en GitHub
  2. Usuario en Git
    • git config --global user.name "John Doe"
    • git config --global user.email johndoe@example.com
  3. Editor de texto
    • git config --global core.editor "code --wait"
    • git config --global core.editor "'C:\Program Files (x86)\Sublime3\Sublime Text 3\sublime_text.exe' -w"
  4. Autocrlf
    • (Windows) git config --global core.autocrlf true
    • (macOS/Linux) git config --global core.autocrlf input
  5. SSH o PAT. Autenticación con GitHub
    • ssh-keygen -t ed25519 -f ~/.ssh/git_workshop -C "johndoe@example.com"
    • ssh-add ~/.ssh/key_file_name
  6. Permisos de usuario del repositorio en GitHub.

SIGUIENTE EPISODIOTe recomendamos que continúes tu travesía por Git y GitHub con nuestro artículo de primeros pasos con Git: commits, logs, push/pull con GitHub y .gitignore.


Bibliografía

https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

https://docs.github.com/es/authentication/connecting-to-github-with-ssh/about-ssh

https://docs.github.com/es/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#keeping-your-personal-access-tokens-secure

2 comentarios en “Cómo configurar Git y GitHub”

  1. Pingback: We Learn Data

  2. Pingback: We Learn Data

Los comentarios están cerrados.

Scroll al inicio