Autenticación en GitHub usando SSH
Este post se muestra cómo autenticarse en GitHub mediante llaves SSH para poder interactuar con repositorios Git.
SSH (Secure SHell) es un protocolo que permite acceso remoto trabajando con pares de llaves (o claves) para generar canales seguros de comunicación.
El procedimiento es similar para otros proveedores de Git, como por ejemplo Bitbucket o GitLab.
Registrar una llave pública
A continuación se explica como generar un par de llaves, una privada que es secreta, y otra pública que se registrará en GitHub u otro proveedor Git:
-
Generar el par de llaves SSH reemplazando los campos
<email>
y<llave>
con valores apropiadosssh-keygen -t ed25519 -C <email> -f ~/.ssh/<llave>
Nota: el nombre
id_ed25519_github
podría ser adecuado para el campo<llave>
, ya que el par de llaves se creó para GitHub usando el esquemaed25519
. -
Verificar que los archivos
~/.ssh/<llave>
y~/.ssh/<llave>.pub
existen, siendo el de extensión.pub
la llave pública (eso significa que puede mostrarse a 3ros sin preocupaciones) -
Abrir el archivo
~/.ssh/config
con un editor de texto, crearlo si no existe, y dependiendo del sistema operativo agregarle lo siguiente para cada caso:Sistema Linux:
Host github.com IdentityFile ~/.ssh/<llave>
Sistema macOS:
Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/<llave>
-
Agregar la llave privada para que el programa
ssh-agent
las recuerdeSistema Linux:
ssh-add ~/.ssh/<llave>
Sistema macOS:
ssh-add -K ~/.ssh/<llave>
-
Agregar la llave pública a GitHub (esto debería ser similar para otros proveedores de repositorios Git)
- Ir a
Settings
en el menú superior derecho - Abrir
SSH and GPG keys
en la columna izquierda - Clickear el botón
New SSH Key
- Llenar el campo
Title
a gusto con un nombre representativo - Ejecutar el comando
cat ~/.ssh/<llave>.pub
(¡atención! extensión.pub
), copiar el resultado y pegarlo en el campoKey
- Clickear el botón
Save SSH Key
- Ir a
Repositorios locales
Al abrir un repositorio en GitHub se puede obtener la url para clonarlo, para ello debe hacerse click en el botón verde que dice Code ▼
, y luego abrir la pestaña SSH.
Una dirección url SSH tiene la forma git@github.com:<usuario>/<repositorio>.git
,
y ese repositorio remoto puede clonarse de la siguiente manera:
git clone <url>
En caso de tener un repositorio previamente clonado desde un remoto llamado origin
(es lo habitual), es posible cambiar su url así:
git remote set-url origin <url>
En ambos casos, y asumiendo que el remoto se llama origin
, se puede verificar
la url del mismo con este comando:
git remote get-url origin <url>