# Uso de una clave SSH con GitHub

El uso de una SSH key con GitHub permite el **acceso sin contraseña a los repositorios Git por SSH**. En lugar de identificar a un usuario por su nombre de usuario y contraseña, la máquina del desarrollador se autentifica a través de la clave SSH.

## ¿Qué es una clave SSH?

[SSH](https://www.ionos.mx/digitalguide/servidores/herramientas/protocolo-ssh/ "Protocolo SSH") es la **herramienta estándar para el acceso cifrado a sistemas remotos**. SSH te permite iniciar sesión en un servidor desde otro equipo. Git utiliza SSH como protocolo de transferencia y permite el acceso de lectura y escritura a los repositorios remotos.

Se utiliza una conexión encriptada para permitir la **autenticación de la máquina** y garantizar que los datos transmitidos no puedan ser falsificados. Sin esto, sería posible que personas no autorizadas hicieran cambios arbitrarios en los repositorios.

Git vía SSH utiliza [cifrado asimétrico](https://www.ionos.mx/digitalguide/servidores/seguridad/cifrado-asimetrico/ "Cifrado asimétrico") como método de encriptación. En primer lugar, **se crean** un **par de claves privadas y públicas**. También se denomina “Public-Private Keypair”. La clave privada permanece en el propio ordenador del usuario. La clave pública se comparte con terceros, por ejemplo, GitHub.

Si utilizas una clave SSH para acceder a los repositorios de GitHub, no necesitas introducir una contraseña. En general, el inicio de sesión sin contraseña se considera más seguro, ya que los **keyloggers o troyanos** no pueden capturar **ninguna contraseña**. En lugar de que una persona conozca la contraseña, se autentifica una máquina en la que se almacena la clave privada.

El uso de Git a través de SSH es extremadamente práctico. Una vez configurada, la clave SSH permite el acceso permanente a GitHub sin más intervención. Otros **protocolos y servicios** también se benefician de [las claves SSH para una conexión de red encriptada](https://www.ionos.mx/digitalguide/servidores/seguridad/como-usar-las-claves-ssh-para-una-conexion-de-red/ "Cómo usar las claves SSH para una conexión de red"). Además de Git vía SSH, se puede utilizar el protocolo seguro SFTP para intercambiar archivos con los servidores sin necesidad de ninguna otra configuración.

La conexión a los repositorios Git se realiza normalmente **desde la línea de comandos**. Si has configurado una clave SSH, puedes realizar un push al propio repositorio sin problemas:

```none
cd ./carpeta_con_repositorio_git/
git push
```

Además de la aplicación de línea de comandos, **las aplicaciones de interfaz gráfica de usuario también se benefician de tener una clave SSH configurada**. Los programas FTP modernos soportan el [protocolo de transferencia de archivos vía SSH (SFTP por sus siglas en inglés)](https://www.ionos.mx/digitalguide/servidores/know-how/sftp-ssh-file-transfer-protocol/ "SFTP (SSH File Transfer Protocol)"), que se basa en SSH y utiliza las claves SSH existentes.

## Cómo utilizar las claves SSH con GitHub

Para acceder con una clave SSH o SSH key a GitHub, debes depositar la clave pública en GitHub. La clave privada permanece en tu propio ordenador. La máquina en la que trabajas se autentifica en GitHub **comparando los datos de la clave.** Esto te permite tener acceso de escritura a tus propios repositorios. Este método también funciona con [alternativas a GitHub](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/alternativas-a-github/ "Alternativas a GitHub") como Gitlab o Bitbucket.

Por muy prácticas que sean las claves SSH, hay que tener cuidado al manejarlas. **No compartas tu clave privada en ninguna circunstancia**. La clave privada puede permitir que otra persona se haga pasar por ti y podría entrar en un servidor o cambiar el código en los repositorios en tu nombre.

### Requisitos para utilizar GitHub con la clave SSH

Este artículo está orientado a quienes trabajan **en un entorno tipo Linux**. Esto incluye Linux/Unix, macOS, así como Windows con [WSL2](https://www.ionos.mx/digitalguide/servidores/know-how/wsl2/ "WSL2") instalado. Además, deben cumplirse las siguientes condiciones:

- Git instalado
- SSH instalado
- Cuenta de GitHub creada

Primero, hay que asegurarse de que se cumplen los requisitos locales. Con el siguiente comando **comprueba si Git y SSH** están **instalados.** A menos que recibas un mensaje de error “git not found” o “git not found”, ambos están presentes:

```none
which git ssh
```

[![Imagen: Probando la instalación de Git y SSH](https://www.ionos.mx/digitalguide/fileadmin/_processed_/a/9/csm_testing-the-installation-of-git-and-ssh_ed689de038.webp "Probando la instalación de Git y SSH")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/testing-the-installation-of-git-and-ssh.png) Git y SSH están instalados en nuestro sistema. Estamos buscando, por ejemplo, un comando inexistente “unknown”.     Además, crea el directorio .ssh en la carpeta del usuario si no existe ya:

```none
mkdir -vp ~/.ssh/
```

A continuación, descubre cómo **generar una clave SSH y registrarla**, con el comando de ssh-keygen en GitHub. Una vez completado este paso, podrás ver cómo depositar la clave SSH pública en GitHub y cómo acceder a los repositorios Git a través de SSH:

1. Crear un par de claves SSH en tu propio sistema
2. Depositar la clave SSH pública en GitHub
3. Acceder al repositorio de GitHub con la clave SSH

### Crear y registrar la clave SSH en tu propio sistema

Como primer paso, crea un **par de claves SSH públicas y privadas en nuestro sistema local**. Copia los comandos utilizados en el mismo orden y ejecútalos en tu línea de comandos. Para ello, sigue la [documentación oficial](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent "Documentación de GitHub") de GitHub. El **procedimiento cambia de vez en cuando**. Así que para solucionar errores de SSH no está de más revisar la página cada cierto tiempo.

En primer lugar, iniciamos el **generador de claves SSH para crear un par de claves públicas/privadas para GitHub**. Utiliza el comando ssh-keygen, que está disponible en el sistema por defecto como parte de la instalación de OpenSSH.

Teclea ssh-keygen en la línea de comandos e inseta tres opciones:

- Opción -f seguida de la ruta y el nombre de la nueva clave
- Opción -t seguida del nombre del algoritmo, en este caso ed25519
- Opción -C seguida de una dirección de correo electrónico como comentario

```bash
ssh-keygen -f "$HOME/.ssh/github_id_ed25519" -t ed25519 -C "correo_de_ejemplo@ejemplo.es"
```

---

### Nota

Puedes utilizar cualquier dirección de correo electrónico para generar el par de claves. Esto sirve solo como etiqueta; no tiene que ser la misma dirección que usas para iniciar sesión en GitHub.

---

El comando ssh-keygen pide que especifiques una **“frase de contraseña”** para la clave privada. A diferencia de una contraseña normal, una frase de contraseña puede contener espacios. La frase de contraseña debe tener varias palabras, para que sea fácil de recordar y difícil de adivinar. Para mayor seguridad, incluye algunos números o caracteres especiales. Escribe la frase de contraseña y pulsa "Intro". Repite el proceso para completar la creación del par de claves SSH.

[![Imagen: Creación de un par de claves SSH para GitHub](https://www.ionos.mx/digitalguide/fileadmin/_processed_/8/6/csm_creating-an-ssh-key-pair-for-github_473bb47bce.webp "Creación de un par de claves SSH para GitHub")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/creating-an-ssh-key-pair-for-github.png) Hemos generado la clave SSH para usarla con GitHub.       ---

### Consejo

USA el algoritmo Ed25519 para el par de claves. De hecho, hay toda una gama de algoritmos disponibles. Descubre los [métodos de encriptado de un vistazo](https://www.ionos.mx/digitalguide/servidores/seguridad/todo-sobre-los-metodos-de-encriptado/ "Todo sobre los métodos de encriptado") en un artículo aparte.

---

Antes de poder utilizar la clave SSH recién creada con GitHub, realiza otro paso. Esto es opcional, pero muy recomendable. **Añade la clave privada al llamado “SSH-Agent”** o agente SSH. Se trata de un programa en segundo plano que se ejecuta en el sistema local. Teclea el siguiente comando en la línea de comandos y escribe la frase de contraseña cuando se te pida:

- Windows / Linux

```none
ssh-add ~/.ssh/github_id_ed25519
```

- macOS hasta 11 Big Sur

```none
ssh-add -K ~/.ssh/github_id_ed25519
```

- macOS desde 12 Monterey

```none
ssh-add --apple-use-keychain ~/.ssh/github_id_ed25519
```

El agente SSH tiene acceso a las claves privadas añadidas y permite **utilizarlas** para las **conexiones sin tener que introducir la frase de contraseña cada vez**. Pero el agente SSH puede hacer aún más:

---

### Cita

&gt; “ssh-agent is a program that can hold a user's private key, so that the private key passphrase only needs to be supplied once. A connection to the agent can also be forwarded when logging into a server, allowing SSH commands on the server to use the agent running on the user's desktop”. Fuente: https://www.ssh.com/academy/ssh/keygen#adding-the-key-to-ssh-agent
&gt;
&gt; Traducción: “ssh-agent es un programa que puede mantener la clave privada de un usuario, de modo que la frase de contraseña de la clave privada solo tiene que suministrarse una vez. También se puede reenviar una conexión al agente cuando se inicia la sesión en un servidor, lo que permite que los comandos SSH en el servidor utilicen el agente que se ejecuta en el escritorio del usuario.” (traducido por IONOS)

---

### Depositar la clave SSH en GitHub

Has creado un par de de claves SSH en nuestro sistema local. Con esto, la mitad de la comunicación permanece encriptada cuando se utiliza Git por SSH. A continuación, hay que **depositar la** **clave SSH pública en GitHub**.

[![Imagen: Página de configuración de la cuenta de GitHub](https://www.ionos.mx/digitalguide/fileadmin/_processed_/2/4/csm_the-github-account-settings-page_d267f89b90.webp "Página de configuración de la cuenta de GitHub")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/the-github-account-settings-page.png) Accede a tu cuenta de GitHub y navega hasta la página de configuración de claves.    [![Imagen: Configuración de GitHub para añadir una clave SSH](https://www.ionos.mx/digitalguide/fileadmin/_processed_/6/b/csm_github-settings-to-add-an-ssh-key_67a1793af1.webp "Configuración de GitHub para añadir una clave SSH")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/github-settings-to-add-an-ssh-key.png) Haz clic en el botón “New SSH key” en “SSH keys” para abrir la página para añadir una nueva clave.       Ahora necesitas el **contenido de la clave pública**. Pasa a tu línea de comandos local y teclea el siguiente comando:

```none
cat ~/.ssh/github_id_ed25519.pub
```

---

### Nota

Atención: el nombre de archivo de una clave pública termina en .pub para “clave pública”. Sin embargo, la clave privada no termina en .priv. En cambio, la clave privada no tiene extensión. Comparte únicamente la clave pública con GitHub y otras personas.

---

[![Imagen: Contenido de la clave pública en la línea de comandos](https://www.ionos.mx/digitalguide/fileadmin/_processed_/a/e/csm_content-of-the-public-key-in-the-command-line_22bd1fbbd2.webp "Contenido de la clave pública en la línea de comandos")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/content-of-the-public-key-in-the-command-line.png) Copia la clave pública emitida y vuelve a la página de GitHub.        [![Imagen: Clave SSH pública copiada en la página de configuración de GitHub](https://www.ionos.mx/digitalguide/fileadmin/_processed_/0/e/csm_ssh-public-key-copied-to-github-settings-page_390c47024a.webp "Clave SSH pública copiada en la página de configuración de GitHub")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/ssh-public-key-copied-to-github-settings-page.png) Pega la clave pública copiada y, opcionalmente, asigna un título. Guarda los cambios haciendo clic en el botón “Add SSH key”.    [![Imagen: Visión general de las claves SSH añadidas en GitHub](https://www.ionos.mx/digitalguide/fileadmin/_processed_/c/8/csm_overview-of-added-ssh-keys-in-github_1a878a871c.webp "Visión general de las claves SSH añadidas en GitHub")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/overview-of-added-ssh-keys-in-github.png) La clave SSH recién añadida para GitHub se muestra en el resumen de claves.       ###  Acceder al repositorio de GitHub con la clave SSH

Tras haber generado las claves SSH de forma local y depositado la clave pública en GitHub, hay que probar si la conexión funciona. Para ello recurre al siguiente comando:

```none
ssh -T git@github.com
```

[![Imagen: Prueba de conexión positiva con GitHub a través de SSH](https://www.ionos.mx/digitalguide/fileadmin/_processed_/f/9/csm_positive-connection-test-to-github-via-ssh_d049f6823b.webp "Prueba de conexión positiva con GitHub a través de SSH")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/positive-connection-test-to-github-via-ssh.png) La conexión encriptada con GitHub está funcionando.       Si es la **primera vez que te conectas a GitHub desde esa máquina**, también tendrás que añadir el servidor a los “known hosts” o hosts conocidos:

[![Imagen: Añadir el servidor GitHub a los hosts SSH conocidos](https://www.ionos.mx/digitalguide/fileadmin/_processed_/e/1/csm_adding-the-github-server-to-the-ssh-known-hosts_8abe87d7d5.webp "Añadir el servidor GitHub a los hosts SSH conocidos")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/adding-the-github-server-to-the-ssh-known-hosts.png) Confirma la adición del servidor escribiendo “yes” y pulsando la tecla “Intro”.       Al acceder a los repositorios de GitHub, **se distingue entre acceso de lectura y de escritura**. Cualquiera puede leer los repositorios públicos; no se requiere autenticación, es decir, no se necesita una clave SSH.

Para **descargar un repositorio como copia local**, usa el comando git clone. A continuación, se presenta un ejemplo con el repositorio de la popular herramienta de red cURL. Accede a la página de GitHub del repositorio público [repositorio cURL](https://github.com/curl/curl "Repositorio de cURL en GitHub") y copia la URL del clon:

[![Imagen: Página de resumen del repositorio cURL](https://www.ionos.mx/digitalguide/fileadmin/_processed_/1/4/csm_overview-page-of-the-curl-repository_d52c47df2e.webp "Página de resumen del repositorio cURL")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/overview-page-of-the-curl-repository.png) Resumen del código del repositorio cURL. / Fuente: https://github.com/curl/curl    [![Imagen: Clonar url del repositorio cURL copiado](https://www.ionos.mx/digitalguide/fileadmin/_processed_/5/2/csm_clone-url-of-the-curl-repository-copied_a77de188dc.webp "Clonar url del repositorio cURL copiado")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/clone-url-of-the-curl-repository-copied.png) Copiamos la "URL del clon" del repositorio cURL. / Fuente: https://github.com/curl/curl       Equipados con la URL del clon, se vuelve a la línea de comandos local. Crea un repositorio de carpetas de ejemplo en el escritorio y pasa a trabajar en él. A continuación, **hay que clonar el repositorio cURL** usando git clone con la URL de clonación:

```none
cd ~/Desktop/
mkdir -p repo && cd repo
git clone https://github.com/curl/curl.git
```

[![Imagen: Clonación del repositorio cURL en la línea de comandos local](https://www.ionos.mx/digitalguide/fileadmin/_processed_/a/6/csm_cloning-the-curl-repository-in-the-local-command-line_53d35286a4.webp "Clonación del repositorio cURL en la línea de comandos local")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/cloning-the-curl-repository-in-the-local-command-line.png) El repositorio cURL clonado está ahora en la carpeta curl.       **Pasa a la carpeta del repositorio cURL** y usa el comando git status para mostrar el estado del repositorio:

```none
cd ~/Desktop/repo/curl/
git status
```

[![Imagen: Estado del repositorio local cURL](https://www.ionos.mx/digitalguide/fileadmin/_processed_/3/5/csm_status-of-the-local-curl-repository_9912fc7851.webp "Estado del repositorio local cURL")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/status-of-the-local-curl-repository.png) El resultado de git status muestra que el estado es normal.       El comando git pull, que actualiza un repositorio, también requiere un acceso de solo lectura. **Para ello, ejecuta git pull en la carpeta del repositorio**; en principio esto funciona, aunque probablemente no haya aún cambios:

```none
git pull
```

Intenta escribir en el repositorio de GitHub utilizando el comando git push:

[![Imagen: Resultado de git pull y git push del repositorio local cURL](https://www.ionos.mx/digitalguide/fileadmin/_processed_/3/d/csm_result-of-git-pull-and-git-push-of-the-local-curl-repository_36b11a0789.webp "Resultado de git pull y git push del repositorio local cURL")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/result-of-git-pull-and-git-push-of-the-local-curl-repository.png) Git pull funciona; git push falla porque la máquina no está autenticada.       ```none
git push
```

¿Por qué sucede esto? La **URL de clonación utilizada para** clonar el repositorio público cURL **comienza con HTTPS**. En consecuencia, para el clon local, una URL HTTPS se almacena como “Origin” u origen. Pasa a comprobar el origen con el comando git show::

```none
git remote -v show
```

[![Imagen: Visión remota del repositorio local cURL en la línea de comandos](https://www.ionos.mx/digitalguide/fileadmin/_processed_/5/6/csm_remotes-of-the-local-curl-repository-in-the-command-line_f1d648edf0.webp "Visión remota del repositorio local cURL en la línea de comandos")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/remotes-of-the-local-curl-repository-in-the-command-line.png) Se muestran las URL de las operaciones git fetch y push.       Para el acceso de lectura, una URL HTTPS es suficiente, pero **se necesita** una **clave SSH para escribir en los repositorios de GitHub**. Esto se debe a que la autenticación de usuarios por nombre de usuario/contraseña [no se admite en GitHub desde agosto de 2021](https://github.blog/changelog/2021-08-12-git-password-authentication-is-shutting-down/ "Changelog de Github").

Para **probar git push de todas formas, hay un truco**. Primero, [crea en GitHub](https://github.com/new "Máscara para crear un repositorio") un repositorio vacío:

[![Imagen: Crear nuevo repositorio en GitHub](https://www.ionos.mx/digitalguide/fileadmin/_processed_/b/c/csm_create-a-new-repository-on-github_b4a60b8a88.webp "Crear nuevo repositorio en GitHub")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/create-a-new-repository-on-github.png) Creación de un nuevo repositorio llamado “test”.    [![Imagen: Vista general de un repositorio GitHub vacío](https://www.ionos.mx/digitalguide/fileadmin/_processed_/9/6/csm_overview-of-an-empty-github-repository_23adf91702.webp "Vista general de un repositorio GitHub vacío")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/overview-of-an-empty-github-repository.png) Nuestro repositorio de GitHub vacío contiene instrucciones para llenarlo de código.       Siguiendo las instrucciones de GitHub, **hay que cambiar la URL push del clon local de cURL en nuestro sistema** para utilizar nuestro repositorio vacío de GitHub como origen. También establece la rama como “main” o principal. A continuación, ejecuta git push; la operación se completa con éxito y utiliza la clave SSH previamente creada para la autenticación en GitHub.

```none
git remote set-url origin git@github.com:<user>/test.git</user>
git branch -M main
git push -u origin main
```

[![Imagen: Cambiar la URL del push y el Git push del repositorio local](https://www.ionos.mx/digitalguide/fileadmin/_processed_/d/7/csm_changing-the-push-url-and-git-push-from-the-local-repository_daa8bb5e1e.webp "Cambiar la URL del push y el Git push del repositorio local")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/changing-the-push-url-and-git-push-from-the-local-repository.png) Git push funciona después de cambiar la URL del push.       ###  Utilizar varias claves SSH para diferentes cuentas de GitHub

**Es posible utilizar una sola clave SSH para diferentes cuentas de GitHub u otras cuentas** sin ningún problema. Recuerda: puedes compartir la clave pública.

Técnicamente, puedes **utilizar tus propias claves SSH para diferentes servicios**. Hay dos métodos posibles:

1. Usar el comando SSH con parámetros
2. Crear archivo de configuración SSH

Los comandos SSH con parámetros pueden resultar muy largos, por lo que no mostramos este enfoque aquí. En general, es **más conveniente trabajar con un archivo de configuración SSH**. Esto requiere un poco más de esfuerzo en la configuración de tu propio sistema, pero solo tienes que hacerlo una vez. A continuación, se muestra un resumen de las carpetas y archivos que intervienen en la configuración de SSH:

<table>
  <thead>
    <tr>
      <th>Configuración SSH</th>
      <th>Ruta</th>
      <th>Aclaración</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Carpeta de configuración</td>
      <td>~/.ssh/</td>
      <td>Contiene la configuración de SSH y los pares de claves</td>
    </tr>
    <tr>
      <td>Clave privada</td>
      <td>~/.ssh/key-name</td>
      <td>Clave privada de un par de claves</td>
    </tr>
    <tr>
      <td>Clave pública</td>
      <td>~/.ssh/key-name.pub</td>
      <td>Clave pública de un par de claves</td>
    </tr>
    <tr>
      <td>Archivo de configuración</td>
      <td>~/.ssh/config</td>
      <td>Archivo de configuración SSH</td>
    </tr>
    <tr>
      <td>Hosts conocidos</td>
      <td>~/.ssh/known\_hosts</td>
      <td>Lista de hosts conectados en el pasado</td>
    </tr>
  </tbody>
</table>

**Primero crea el archivo de configuración SSH**. Establece los derechos de usuario y abre el archivo en el editor de línea de comandos:

```none
touch ~/.ssh/config
chmod 600 ~/.ssh/config
nano ~/.ssh/config
```

A continuación, **copia el siguiente bloque en el editor** y sigue las capturas de pantalla para guardar el archivo:

```none
# Github
Host github github.com
    HostName github.com
    User git
    IdentityFile "~/.ssh/github_id_ed25519"
    IdentitiesOnly yes
```

[![Imagen: Insertar la configuración de GitHub en el archivo de configuración de SSH](https://www.ionos.mx/digitalguide/fileadmin/_processed_/3/c/csm_inserting-the-github-configuration-into-ssh-config-file_f479f56e80.webp "Insertar la configuración de GitHub en el archivo de configuración de SSH")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/inserting-the-github-configuration-into-ssh-config-file.png) Pega el bloque de configuración y pulsar Ctrl + X para escribir los cambios y cierra el editor.    [![Imagen: Escribir el archivo de configuración SSH modificado](https://www.ionos.mx/digitalguide/fileadmin/_processed_/6/9/csm_writing-the-modified-ssh-config-file_825439011e.webp "Escribir el archivo de configuración SSH modificado")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/writing-the-modified-ssh-config-file.png) Confirma el nombre del archivo pulsando “Intro”.    [![Imagen: Confirmar los cambios en el archivo SSH Config](https://www.ionos.mx/digitalguide/fileadmin/_processed_/5/5/csm_confirming-the-changes-to-the-ssh-config_file_abd237ba18.webp "Confirmar los cambios en el archivo SSH Config")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Screenshots_2022/confirming-the-changes-to-the-ssh-config_file.png) Confirma la escritura de los cambios pulsando “Intro”.       Después de insertar el bloque de configuración de GitHub, puedes establecer una conexión SSH especificando la abreviatura de host definida “github”:

```none
ssh -T github
```

Sigue el esquema mostrado y añade **bloques de configuración para servicios o cuentas adicionales al archivo de configuración SSH**. A continuación, tienes un resumen de los parámetros utilizados:

<table>
  <thead>
    <tr>
      <th>Configuración</th>
      <th>Explicación</th>
      <th>Ejemplo</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Host</td>
      <td>Puede contener cualquier número de nombres</td>
      <td>github.com github</td>
    </tr>
    <tr>
      <td>HostName</td>
      <td>Nombre de host del sistema remoto en el que se está ejecutando SSH; también se puede utilizar una dirección IP</td>
      <td>github.com</td>
    </tr>
    <tr>
      <td>User</td>
      <td>Usuario Git en el sistema remoto; debe ser copiado exactamente</td>
      <td>git</td>
    </tr>
    <tr>
      <td>IdentityFile</td>
      <td>Ruta completa a la clave privada. Ajústala si utiliza varias teclas</td>
      <td>~/.ssh/github\_id\_ed25519</td>
    </tr>
    <tr>
      <td>IdentitiesOnly</td>
      <td>Especifica que el acceso para este host solo se permite por clave</td>
      <td>yes</td>
    </tr>
  </tbody>
</table>

Un último consejo. Si **creas** configuraciones SSH para **varios hosts con tus propias claves**, debes añadir un bloque con configuraciones para hosts no listados al final del archivo:

```none
# For all hosts
Host *
IdentitiesOnly no
IgnoreUnknown UseKeychain, AddKeysToAgent
UseKeychain yes
AddKeysToAgent yes
```

Esto permite **el acceso sin una clave SSH a hosts no especificados**. Así, puedes conectarte a un host a través del comando SSH con tu nombre de usuario e introducir la contraseña al conectarse:

```none
ssh user@host
```

Sin la línea “IdentitiesOnly no” en la configuración final, SSH intenta todas las claves en ~./ssh/ una tras otra para conectarse al servidor. Si no hay ninguna clave que coincida, se produce el error “Too many authentication failures”, que refleja “Demasiados fallos de autenticación”.


This is a markdown version of: [https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/ssh-key-con-github/](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/ssh-key-con-github/) for AI/LLM consumption.